package dk.itu.smdp.ftc.ui.contentassist.antlr.internal; 

import java.io.InputStream;
import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.DFA;
import dk.itu.smdp.ftc.services.FTCGrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

@SuppressWarnings("all")
public class InternalFTCParser extends AbstractInternalContentAssistParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_STRING", "RULE_ID", "RULE_INT", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'-'", "'.'", "'/'", "'!'", "'&&'", "'||'", "'Mapping'", "'{'", "'}'", "':'", "';'", "'+='", "'['", "']'"
    };
    public static final int RULE_ID=5;
    public static final int T__24=24;
    public static final int T__23=23;
    public static final int T__22=22;
    public static final int RULE_ANY_OTHER=10;
    public static final int T__21=21;
    public static final int T__20=20;
    public static final int RULE_SL_COMMENT=8;
    public static final int EOF=-1;
    public static final int RULE_ML_COMMENT=7;
    public static final int T__19=19;
    public static final int RULE_STRING=4;
    public static final int T__16=16;
    public static final int T__15=15;
    public static final int T__18=18;
    public static final int T__17=17;
    public static final int T__12=12;
    public static final int T__11=11;
    public static final int T__14=14;
    public static final int T__13=13;
    public static final int RULE_INT=6;
    public static final int RULE_WS=9;

    // delegates
    // delegators


        public InternalFTCParser(TokenStream input) {
            this(input, new RecognizerSharedState());
        }
        public InternalFTCParser(TokenStream input, RecognizerSharedState state) {
            super(input, state);
             
        }
        

    public String[] getTokenNames() { return InternalFTCParser.tokenNames; }
    public String getGrammarFileName() { return "../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g"; }


     
     	private FTCGrammarAccess grammarAccess;
     	
        public void setGrammarAccess(FTCGrammarAccess grammarAccess) {
        	this.grammarAccess = grammarAccess;
        }
        
        @Override
        protected Grammar getGrammar() {
        	return grammarAccess.getGrammar();
        }
        
        @Override
        protected String getValueForTokenName(String tokenName) {
        	return tokenName;
        }




    // $ANTLR start "entryRuleModelRoot"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:60:1: entryRuleModelRoot : ruleModelRoot EOF ;
    public final void entryRuleModelRoot() throws RecognitionException {
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:61:1: ( ruleModelRoot EOF )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:62:1: ruleModelRoot EOF
            {
             before(grammarAccess.getModelRootRule()); 
            pushFollow(FollowSets000.FOLLOW_ruleModelRoot_in_entryRuleModelRoot61);
            ruleModelRoot();

            state._fsp--;

             after(grammarAccess.getModelRootRule()); 
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleModelRoot68); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleModelRoot"


    // $ANTLR start "ruleModelRoot"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:69:1: ruleModelRoot : ( ( rule__ModelRoot__Group__0 ) ) ;
    public final void ruleModelRoot() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:73:2: ( ( ( rule__ModelRoot__Group__0 ) ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:74:1: ( ( rule__ModelRoot__Group__0 ) )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:74:1: ( ( rule__ModelRoot__Group__0 ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:75:1: ( rule__ModelRoot__Group__0 )
            {
             before(grammarAccess.getModelRootAccess().getGroup()); 
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:76:1: ( rule__ModelRoot__Group__0 )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:76:2: rule__ModelRoot__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_rule__ModelRoot__Group__0_in_ruleModelRoot94);
            rule__ModelRoot__Group__0();

            state._fsp--;


            }

             after(grammarAccess.getModelRootAccess().getGroup()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleModelRoot"


    // $ANTLR start "entryRuleFeatureExpression"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:88:1: entryRuleFeatureExpression : ruleFeatureExpression EOF ;
    public final void entryRuleFeatureExpression() throws RecognitionException {
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:89:1: ( ruleFeatureExpression EOF )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:90:1: ruleFeatureExpression EOF
            {
             before(grammarAccess.getFeatureExpressionRule()); 
            pushFollow(FollowSets000.FOLLOW_ruleFeatureExpression_in_entryRuleFeatureExpression121);
            ruleFeatureExpression();

            state._fsp--;

             after(grammarAccess.getFeatureExpressionRule()); 
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleFeatureExpression128); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleFeatureExpression"


    // $ANTLR start "ruleFeatureExpression"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:97:1: ruleFeatureExpression : ( ruleBinaryFeatureExpression ) ;
    public final void ruleFeatureExpression() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:101:2: ( ( ruleBinaryFeatureExpression ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:102:1: ( ruleBinaryFeatureExpression )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:102:1: ( ruleBinaryFeatureExpression )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:103:1: ruleBinaryFeatureExpression
            {
             before(grammarAccess.getFeatureExpressionAccess().getBinaryFeatureExpressionParserRuleCall()); 
            pushFollow(FollowSets000.FOLLOW_ruleBinaryFeatureExpression_in_ruleFeatureExpression154);
            ruleBinaryFeatureExpression();

            state._fsp--;

             after(grammarAccess.getFeatureExpressionAccess().getBinaryFeatureExpressionParserRuleCall()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleFeatureExpression"


    // $ANTLR start "entryRuleBinaryFeatureExpression"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:116:1: entryRuleBinaryFeatureExpression : ruleBinaryFeatureExpression EOF ;
    public final void entryRuleBinaryFeatureExpression() throws RecognitionException {
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:117:1: ( ruleBinaryFeatureExpression EOF )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:118:1: ruleBinaryFeatureExpression EOF
            {
             before(grammarAccess.getBinaryFeatureExpressionRule()); 
            pushFollow(FollowSets000.FOLLOW_ruleBinaryFeatureExpression_in_entryRuleBinaryFeatureExpression180);
            ruleBinaryFeatureExpression();

            state._fsp--;

             after(grammarAccess.getBinaryFeatureExpressionRule()); 
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleBinaryFeatureExpression187); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleBinaryFeatureExpression"


    // $ANTLR start "ruleBinaryFeatureExpression"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:125:1: ruleBinaryFeatureExpression : ( ( rule__BinaryFeatureExpression__Group__0 ) ) ;
    public final void ruleBinaryFeatureExpression() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:129:2: ( ( ( rule__BinaryFeatureExpression__Group__0 ) ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:130:1: ( ( rule__BinaryFeatureExpression__Group__0 ) )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:130:1: ( ( rule__BinaryFeatureExpression__Group__0 ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:131:1: ( rule__BinaryFeatureExpression__Group__0 )
            {
             before(grammarAccess.getBinaryFeatureExpressionAccess().getGroup()); 
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:132:1: ( rule__BinaryFeatureExpression__Group__0 )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:132:2: rule__BinaryFeatureExpression__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_rule__BinaryFeatureExpression__Group__0_in_ruleBinaryFeatureExpression213);
            rule__BinaryFeatureExpression__Group__0();

            state._fsp--;


            }

             after(grammarAccess.getBinaryFeatureExpressionAccess().getGroup()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleBinaryFeatureExpression"


    // $ANTLR start "entryRuleUnaryFeatureExpression"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:144:1: entryRuleUnaryFeatureExpression : ruleUnaryFeatureExpression EOF ;
    public final void entryRuleUnaryFeatureExpression() throws RecognitionException {
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:145:1: ( ruleUnaryFeatureExpression EOF )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:146:1: ruleUnaryFeatureExpression EOF
            {
             before(grammarAccess.getUnaryFeatureExpressionRule()); 
            pushFollow(FollowSets000.FOLLOW_ruleUnaryFeatureExpression_in_entryRuleUnaryFeatureExpression240);
            ruleUnaryFeatureExpression();

            state._fsp--;

             after(grammarAccess.getUnaryFeatureExpressionRule()); 
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleUnaryFeatureExpression247); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleUnaryFeatureExpression"


    // $ANTLR start "ruleUnaryFeatureExpression"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:153:1: ruleUnaryFeatureExpression : ( ( rule__UnaryFeatureExpression__Group__0 ) ) ;
    public final void ruleUnaryFeatureExpression() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:157:2: ( ( ( rule__UnaryFeatureExpression__Group__0 ) ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:158:1: ( ( rule__UnaryFeatureExpression__Group__0 ) )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:158:1: ( ( rule__UnaryFeatureExpression__Group__0 ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:159:1: ( rule__UnaryFeatureExpression__Group__0 )
            {
             before(grammarAccess.getUnaryFeatureExpressionAccess().getGroup()); 
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:160:1: ( rule__UnaryFeatureExpression__Group__0 )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:160:2: rule__UnaryFeatureExpression__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_rule__UnaryFeatureExpression__Group__0_in_ruleUnaryFeatureExpression273);
            rule__UnaryFeatureExpression__Group__0();

            state._fsp--;


            }

             after(grammarAccess.getUnaryFeatureExpressionAccess().getGroup()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleUnaryFeatureExpression"


    // $ANTLR start "entryRuleMapping"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:172:1: entryRuleMapping : ruleMapping EOF ;
    public final void entryRuleMapping() throws RecognitionException {
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:173:1: ( ruleMapping EOF )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:174:1: ruleMapping EOF
            {
             before(grammarAccess.getMappingRule()); 
            pushFollow(FollowSets000.FOLLOW_ruleMapping_in_entryRuleMapping300);
            ruleMapping();

            state._fsp--;

             after(grammarAccess.getMappingRule()); 
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleMapping307); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleMapping"


    // $ANTLR start "ruleMapping"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:181:1: ruleMapping : ( ( rule__Mapping__Group__0 ) ) ;
    public final void ruleMapping() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:185:2: ( ( ( rule__Mapping__Group__0 ) ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:186:1: ( ( rule__Mapping__Group__0 ) )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:186:1: ( ( rule__Mapping__Group__0 ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:187:1: ( rule__Mapping__Group__0 )
            {
             before(grammarAccess.getMappingAccess().getGroup()); 
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:188:1: ( rule__Mapping__Group__0 )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:188:2: rule__Mapping__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_rule__Mapping__Group__0_in_ruleMapping333);
            rule__Mapping__Group__0();

            state._fsp--;


            }

             after(grammarAccess.getMappingAccess().getGroup()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleMapping"


    // $ANTLR start "entryRuleFileMapping"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:200:1: entryRuleFileMapping : ruleFileMapping EOF ;
    public final void entryRuleFileMapping() throws RecognitionException {
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:201:1: ( ruleFileMapping EOF )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:202:1: ruleFileMapping EOF
            {
             before(grammarAccess.getFileMappingRule()); 
            pushFollow(FollowSets000.FOLLOW_ruleFileMapping_in_entryRuleFileMapping360);
            ruleFileMapping();

            state._fsp--;

             after(grammarAccess.getFileMappingRule()); 
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleFileMapping367); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleFileMapping"


    // $ANTLR start "ruleFileMapping"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:209:1: ruleFileMapping : ( ( rule__FileMapping__Group__0 ) ) ;
    public final void ruleFileMapping() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:213:2: ( ( ( rule__FileMapping__Group__0 ) ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:214:1: ( ( rule__FileMapping__Group__0 ) )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:214:1: ( ( rule__FileMapping__Group__0 ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:215:1: ( rule__FileMapping__Group__0 )
            {
             before(grammarAccess.getFileMappingAccess().getGroup()); 
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:216:1: ( rule__FileMapping__Group__0 )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:216:2: rule__FileMapping__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_rule__FileMapping__Group__0_in_ruleFileMapping393);
            rule__FileMapping__Group__0();

            state._fsp--;


            }

             after(grammarAccess.getFileMappingAccess().getGroup()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleFileMapping"


    // $ANTLR start "entryRulePathExpression"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:228:1: entryRulePathExpression : rulePathExpression EOF ;
    public final void entryRulePathExpression() throws RecognitionException {
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:229:1: ( rulePathExpression EOF )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:230:1: rulePathExpression EOF
            {
             before(grammarAccess.getPathExpressionRule()); 
            pushFollow(FollowSets000.FOLLOW_rulePathExpression_in_entryRulePathExpression420);
            rulePathExpression();

            state._fsp--;

             after(grammarAccess.getPathExpressionRule()); 
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRulePathExpression427); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRulePathExpression"


    // $ANTLR start "rulePathExpression"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:237:1: rulePathExpression : ( ( rule__PathExpression__Group__0 ) ) ;
    public final void rulePathExpression() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:241:2: ( ( ( rule__PathExpression__Group__0 ) ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:242:1: ( ( rule__PathExpression__Group__0 ) )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:242:1: ( ( rule__PathExpression__Group__0 ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:243:1: ( rule__PathExpression__Group__0 )
            {
             before(grammarAccess.getPathExpressionAccess().getGroup()); 
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:244:1: ( rule__PathExpression__Group__0 )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:244:2: rule__PathExpression__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_rule__PathExpression__Group__0_in_rulePathExpression453);
            rule__PathExpression__Group__0();

            state._fsp--;


            }

             after(grammarAccess.getPathExpressionAccess().getGroup()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rulePathExpression"


    // $ANTLR start "entryRulePath"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:256:1: entryRulePath : rulePath EOF ;
    public final void entryRulePath() throws RecognitionException {
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:257:1: ( rulePath EOF )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:258:1: rulePath EOF
            {
             before(grammarAccess.getPathRule()); 
            pushFollow(FollowSets000.FOLLOW_rulePath_in_entryRulePath480);
            rulePath();

            state._fsp--;

             after(grammarAccess.getPathRule()); 
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRulePath487); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRulePath"


    // $ANTLR start "rulePath"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:265:1: rulePath : ( ( rule__Path__NameAssignment ) ) ;
    public final void rulePath() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:269:2: ( ( ( rule__Path__NameAssignment ) ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:270:1: ( ( rule__Path__NameAssignment ) )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:270:1: ( ( rule__Path__NameAssignment ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:271:1: ( rule__Path__NameAssignment )
            {
             before(grammarAccess.getPathAccess().getNameAssignment()); 
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:272:1: ( rule__Path__NameAssignment )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:272:2: rule__Path__NameAssignment
            {
            pushFollow(FollowSets000.FOLLOW_rule__Path__NameAssignment_in_rulePath513);
            rule__Path__NameAssignment();

            state._fsp--;


            }

             after(grammarAccess.getPathAccess().getNameAssignment()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rulePath"


    // $ANTLR start "entryRuleModule"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:284:1: entryRuleModule : ruleModule EOF ;
    public final void entryRuleModule() throws RecognitionException {
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:285:1: ( ruleModule EOF )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:286:1: ruleModule EOF
            {
             before(grammarAccess.getModuleRule()); 
            pushFollow(FollowSets000.FOLLOW_ruleModule_in_entryRuleModule540);
            ruleModule();

            state._fsp--;

             after(grammarAccess.getModuleRule()); 
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleModule547); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleModule"


    // $ANTLR start "ruleModule"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:293:1: ruleModule : ( ( rule__Module__Group__0 ) ) ;
    public final void ruleModule() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:297:2: ( ( ( rule__Module__Group__0 ) ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:298:1: ( ( rule__Module__Group__0 ) )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:298:1: ( ( rule__Module__Group__0 ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:299:1: ( rule__Module__Group__0 )
            {
             before(grammarAccess.getModuleAccess().getGroup()); 
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:300:1: ( rule__Module__Group__0 )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:300:2: rule__Module__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_rule__Module__Group__0_in_ruleModule573);
            rule__Module__Group__0();

            state._fsp--;


            }

             after(grammarAccess.getModuleAccess().getGroup()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleModule"


    // $ANTLR start "entryRuleFeature"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:312:1: entryRuleFeature : ruleFeature EOF ;
    public final void entryRuleFeature() throws RecognitionException {
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:313:1: ( ruleFeature EOF )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:314:1: ruleFeature EOF
            {
             before(grammarAccess.getFeatureRule()); 
            pushFollow(FollowSets000.FOLLOW_ruleFeature_in_entryRuleFeature600);
            ruleFeature();

            state._fsp--;

             after(grammarAccess.getFeatureRule()); 
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleFeature607); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleFeature"


    // $ANTLR start "ruleFeature"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:321:1: ruleFeature : ( ( rule__Feature__NameAssignment ) ) ;
    public final void ruleFeature() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:325:2: ( ( ( rule__Feature__NameAssignment ) ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:326:1: ( ( rule__Feature__NameAssignment ) )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:326:1: ( ( rule__Feature__NameAssignment ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:327:1: ( rule__Feature__NameAssignment )
            {
             before(grammarAccess.getFeatureAccess().getNameAssignment()); 
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:328:1: ( rule__Feature__NameAssignment )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:328:2: rule__Feature__NameAssignment
            {
            pushFollow(FollowSets000.FOLLOW_rule__Feature__NameAssignment_in_ruleFeature633);
            rule__Feature__NameAssignment();

            state._fsp--;


            }

             after(grammarAccess.getFeatureAccess().getNameAssignment()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleFeature"


    // $ANTLR start "entryRuleEString"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:340:1: entryRuleEString : ruleEString EOF ;
    public final void entryRuleEString() throws RecognitionException {
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:341:1: ( ruleEString EOF )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:342:1: ruleEString EOF
            {
             before(grammarAccess.getEStringRule()); 
            pushFollow(FollowSets000.FOLLOW_ruleEString_in_entryRuleEString660);
            ruleEString();

            state._fsp--;

             after(grammarAccess.getEStringRule()); 
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleEString667); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleEString"


    // $ANTLR start "ruleEString"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:349:1: ruleEString : ( ( rule__EString__Alternatives ) ) ;
    public final void ruleEString() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:353:2: ( ( ( rule__EString__Alternatives ) ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:354:1: ( ( rule__EString__Alternatives ) )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:354:1: ( ( rule__EString__Alternatives ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:355:1: ( rule__EString__Alternatives )
            {
             before(grammarAccess.getEStringAccess().getAlternatives()); 
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:356:1: ( rule__EString__Alternatives )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:356:2: rule__EString__Alternatives
            {
            pushFollow(FollowSets000.FOLLOW_rule__EString__Alternatives_in_ruleEString693);
            rule__EString__Alternatives();

            state._fsp--;


            }

             after(grammarAccess.getEStringAccess().getAlternatives()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleEString"


    // $ANTLR start "rulePathEnum"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:369:1: rulePathEnum : ( ( rule__PathEnum__Alternatives ) ) ;
    public final void rulePathEnum() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:373:1: ( ( ( rule__PathEnum__Alternatives ) ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:374:1: ( ( rule__PathEnum__Alternatives ) )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:374:1: ( ( rule__PathEnum__Alternatives ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:375:1: ( rule__PathEnum__Alternatives )
            {
             before(grammarAccess.getPathEnumAccess().getAlternatives()); 
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:376:1: ( rule__PathEnum__Alternatives )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:376:2: rule__PathEnum__Alternatives
            {
            pushFollow(FollowSets000.FOLLOW_rule__PathEnum__Alternatives_in_rulePathEnum730);
            rule__PathEnum__Alternatives();

            state._fsp--;


            }

             after(grammarAccess.getPathEnumAccess().getAlternatives()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rulePathEnum"


    // $ANTLR start "ruleOperatorsEnum"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:388:1: ruleOperatorsEnum : ( ( rule__OperatorsEnum__Alternatives ) ) ;
    public final void ruleOperatorsEnum() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:392:1: ( ( ( rule__OperatorsEnum__Alternatives ) ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:393:1: ( ( rule__OperatorsEnum__Alternatives ) )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:393:1: ( ( rule__OperatorsEnum__Alternatives ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:394:1: ( rule__OperatorsEnum__Alternatives )
            {
             before(grammarAccess.getOperatorsEnumAccess().getAlternatives()); 
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:395:1: ( rule__OperatorsEnum__Alternatives )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:395:2: rule__OperatorsEnum__Alternatives
            {
            pushFollow(FollowSets000.FOLLOW_rule__OperatorsEnum__Alternatives_in_ruleOperatorsEnum766);
            rule__OperatorsEnum__Alternatives();

            state._fsp--;


            }

             after(grammarAccess.getOperatorsEnumAccess().getAlternatives()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleOperatorsEnum"


    // $ANTLR start "rule__BinaryFeatureExpression__Alternatives_0"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:406:1: rule__BinaryFeatureExpression__Alternatives_0 : ( ( ruleUnaryFeatureExpression ) | ( ruleFeature ) );
    public final void rule__BinaryFeatureExpression__Alternatives_0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:410:1: ( ( ruleUnaryFeatureExpression ) | ( ruleFeature ) )
            int alt1=2;
            int LA1_0 = input.LA(1);

            if ( ((LA1_0>=14 && LA1_0<=16)) ) {
                alt1=1;
            }
            else if ( (LA1_0==RULE_ID) ) {
                alt1=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 1, 0, input);

                throw nvae;
            }
            switch (alt1) {
                case 1 :
                    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:411:1: ( ruleUnaryFeatureExpression )
                    {
                    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:411:1: ( ruleUnaryFeatureExpression )
                    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:412:1: ruleUnaryFeatureExpression
                    {
                     before(grammarAccess.getBinaryFeatureExpressionAccess().getUnaryFeatureExpressionParserRuleCall_0_0()); 
                    pushFollow(FollowSets000.FOLLOW_ruleUnaryFeatureExpression_in_rule__BinaryFeatureExpression__Alternatives_0801);
                    ruleUnaryFeatureExpression();

                    state._fsp--;

                     after(grammarAccess.getBinaryFeatureExpressionAccess().getUnaryFeatureExpressionParserRuleCall_0_0()); 

                    }


                    }
                    break;
                case 2 :
                    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:417:6: ( ruleFeature )
                    {
                    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:417:6: ( ruleFeature )
                    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:418:1: ruleFeature
                    {
                     before(grammarAccess.getBinaryFeatureExpressionAccess().getFeatureParserRuleCall_0_1()); 
                    pushFollow(FollowSets000.FOLLOW_ruleFeature_in_rule__BinaryFeatureExpression__Alternatives_0818);
                    ruleFeature();

                    state._fsp--;

                     after(grammarAccess.getBinaryFeatureExpressionAccess().getFeatureParserRuleCall_0_1()); 

                    }


                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__BinaryFeatureExpression__Alternatives_0"


    // $ANTLR start "rule__EString__Alternatives"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:428:1: rule__EString__Alternatives : ( ( RULE_STRING ) | ( RULE_ID ) );
    public final void rule__EString__Alternatives() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:432:1: ( ( RULE_STRING ) | ( RULE_ID ) )
            int alt2=2;
            int LA2_0 = input.LA(1);

            if ( (LA2_0==RULE_STRING) ) {
                alt2=1;
            }
            else if ( (LA2_0==RULE_ID) ) {
                alt2=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 2, 0, input);

                throw nvae;
            }
            switch (alt2) {
                case 1 :
                    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:433:1: ( RULE_STRING )
                    {
                    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:433:1: ( RULE_STRING )
                    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:434:1: RULE_STRING
                    {
                     before(grammarAccess.getEStringAccess().getSTRINGTerminalRuleCall_0()); 
                    match(input,RULE_STRING,FollowSets000.FOLLOW_RULE_STRING_in_rule__EString__Alternatives850); 
                     after(grammarAccess.getEStringAccess().getSTRINGTerminalRuleCall_0()); 

                    }


                    }
                    break;
                case 2 :
                    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:439:6: ( RULE_ID )
                    {
                    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:439:6: ( RULE_ID )
                    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:440:1: RULE_ID
                    {
                     before(grammarAccess.getEStringAccess().getIDTerminalRuleCall_1()); 
                    match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_rule__EString__Alternatives867); 
                     after(grammarAccess.getEStringAccess().getIDTerminalRuleCall_1()); 

                    }


                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__EString__Alternatives"


    // $ANTLR start "rule__PathEnum__Alternatives"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:450:1: rule__PathEnum__Alternatives : ( ( ( '-' ) ) | ( ( '.' ) ) | ( ( '/' ) ) );
    public final void rule__PathEnum__Alternatives() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:454:1: ( ( ( '-' ) ) | ( ( '.' ) ) | ( ( '/' ) ) )
            int alt3=3;
            switch ( input.LA(1) ) {
            case 11:
                {
                alt3=1;
                }
                break;
            case 12:
                {
                alt3=2;
                }
                break;
            case 13:
                {
                alt3=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 3, 0, input);

                throw nvae;
            }

            switch (alt3) {
                case 1 :
                    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:455:1: ( ( '-' ) )
                    {
                    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:455:1: ( ( '-' ) )
                    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:456:1: ( '-' )
                    {
                     before(grammarAccess.getPathEnumAccess().getDASHEnumLiteralDeclaration_0()); 
                    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:457:1: ( '-' )
                    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:457:3: '-'
                    {
                    match(input,11,FollowSets000.FOLLOW_11_in_rule__PathEnum__Alternatives900); 

                    }

                     after(grammarAccess.getPathEnumAccess().getDASHEnumLiteralDeclaration_0()); 

                    }


                    }
                    break;
                case 2 :
                    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:462:6: ( ( '.' ) )
                    {
                    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:462:6: ( ( '.' ) )
                    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:463:1: ( '.' )
                    {
                     before(grammarAccess.getPathEnumAccess().getPERIODEnumLiteralDeclaration_1()); 
                    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:464:1: ( '.' )
                    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:464:3: '.'
                    {
                    match(input,12,FollowSets000.FOLLOW_12_in_rule__PathEnum__Alternatives921); 

                    }

                     after(grammarAccess.getPathEnumAccess().getPERIODEnumLiteralDeclaration_1()); 

                    }


                    }
                    break;
                case 3 :
                    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:469:6: ( ( '/' ) )
                    {
                    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:469:6: ( ( '/' ) )
                    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:470:1: ( '/' )
                    {
                     before(grammarAccess.getPathEnumAccess().getSLASHEnumLiteralDeclaration_2()); 
                    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:471:1: ( '/' )
                    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:471:3: '/'
                    {
                    match(input,13,FollowSets000.FOLLOW_13_in_rule__PathEnum__Alternatives942); 

                    }

                     after(grammarAccess.getPathEnumAccess().getSLASHEnumLiteralDeclaration_2()); 

                    }


                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PathEnum__Alternatives"


    // $ANTLR start "rule__OperatorsEnum__Alternatives"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:481:1: rule__OperatorsEnum__Alternatives : ( ( ( '!' ) ) | ( ( '&&' ) ) | ( ( '||' ) ) );
    public final void rule__OperatorsEnum__Alternatives() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:485:1: ( ( ( '!' ) ) | ( ( '&&' ) ) | ( ( '||' ) ) )
            int alt4=3;
            switch ( input.LA(1) ) {
            case 14:
                {
                alt4=1;
                }
                break;
            case 15:
                {
                alt4=2;
                }
                break;
            case 16:
                {
                alt4=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 4, 0, input);

                throw nvae;
            }

            switch (alt4) {
                case 1 :
                    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:486:1: ( ( '!' ) )
                    {
                    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:486:1: ( ( '!' ) )
                    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:487:1: ( '!' )
                    {
                     before(grammarAccess.getOperatorsEnumAccess().getNOTEnumLiteralDeclaration_0()); 
                    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:488:1: ( '!' )
                    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:488:3: '!'
                    {
                    match(input,14,FollowSets000.FOLLOW_14_in_rule__OperatorsEnum__Alternatives978); 

                    }

                     after(grammarAccess.getOperatorsEnumAccess().getNOTEnumLiteralDeclaration_0()); 

                    }


                    }
                    break;
                case 2 :
                    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:493:6: ( ( '&&' ) )
                    {
                    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:493:6: ( ( '&&' ) )
                    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:494:1: ( '&&' )
                    {
                     before(grammarAccess.getOperatorsEnumAccess().getANDEnumLiteralDeclaration_1()); 
                    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:495:1: ( '&&' )
                    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:495:3: '&&'
                    {
                    match(input,15,FollowSets000.FOLLOW_15_in_rule__OperatorsEnum__Alternatives999); 

                    }

                     after(grammarAccess.getOperatorsEnumAccess().getANDEnumLiteralDeclaration_1()); 

                    }


                    }
                    break;
                case 3 :
                    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:500:6: ( ( '||' ) )
                    {
                    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:500:6: ( ( '||' ) )
                    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:501:1: ( '||' )
                    {
                     before(grammarAccess.getOperatorsEnumAccess().getOREnumLiteralDeclaration_2()); 
                    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:502:1: ( '||' )
                    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:502:3: '||'
                    {
                    match(input,16,FollowSets000.FOLLOW_16_in_rule__OperatorsEnum__Alternatives1020); 

                    }

                     after(grammarAccess.getOperatorsEnumAccess().getOREnumLiteralDeclaration_2()); 

                    }


                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__OperatorsEnum__Alternatives"


    // $ANTLR start "rule__ModelRoot__Group__0"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:514:1: rule__ModelRoot__Group__0 : rule__ModelRoot__Group__0__Impl rule__ModelRoot__Group__1 ;
    public final void rule__ModelRoot__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:518:1: ( rule__ModelRoot__Group__0__Impl rule__ModelRoot__Group__1 )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:519:2: rule__ModelRoot__Group__0__Impl rule__ModelRoot__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_rule__ModelRoot__Group__0__Impl_in_rule__ModelRoot__Group__01053);
            rule__ModelRoot__Group__0__Impl();

            state._fsp--;

            pushFollow(FollowSets000.FOLLOW_rule__ModelRoot__Group__1_in_rule__ModelRoot__Group__01056);
            rule__ModelRoot__Group__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ModelRoot__Group__0"


    // $ANTLR start "rule__ModelRoot__Group__0__Impl"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:526:1: rule__ModelRoot__Group__0__Impl : ( 'Mapping' ) ;
    public final void rule__ModelRoot__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:530:1: ( ( 'Mapping' ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:531:1: ( 'Mapping' )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:531:1: ( 'Mapping' )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:532:1: 'Mapping'
            {
             before(grammarAccess.getModelRootAccess().getMappingKeyword_0()); 
            match(input,17,FollowSets000.FOLLOW_17_in_rule__ModelRoot__Group__0__Impl1084); 
             after(grammarAccess.getModelRootAccess().getMappingKeyword_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ModelRoot__Group__0__Impl"


    // $ANTLR start "rule__ModelRoot__Group__1"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:545:1: rule__ModelRoot__Group__1 : rule__ModelRoot__Group__1__Impl rule__ModelRoot__Group__2 ;
    public final void rule__ModelRoot__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:549:1: ( rule__ModelRoot__Group__1__Impl rule__ModelRoot__Group__2 )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:550:2: rule__ModelRoot__Group__1__Impl rule__ModelRoot__Group__2
            {
            pushFollow(FollowSets000.FOLLOW_rule__ModelRoot__Group__1__Impl_in_rule__ModelRoot__Group__11115);
            rule__ModelRoot__Group__1__Impl();

            state._fsp--;

            pushFollow(FollowSets000.FOLLOW_rule__ModelRoot__Group__2_in_rule__ModelRoot__Group__11118);
            rule__ModelRoot__Group__2();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ModelRoot__Group__1"


    // $ANTLR start "rule__ModelRoot__Group__1__Impl"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:557:1: rule__ModelRoot__Group__1__Impl : ( ( rule__ModelRoot__NameAssignment_1 ) ) ;
    public final void rule__ModelRoot__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:561:1: ( ( ( rule__ModelRoot__NameAssignment_1 ) ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:562:1: ( ( rule__ModelRoot__NameAssignment_1 ) )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:562:1: ( ( rule__ModelRoot__NameAssignment_1 ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:563:1: ( rule__ModelRoot__NameAssignment_1 )
            {
             before(grammarAccess.getModelRootAccess().getNameAssignment_1()); 
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:564:1: ( rule__ModelRoot__NameAssignment_1 )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:564:2: rule__ModelRoot__NameAssignment_1
            {
            pushFollow(FollowSets000.FOLLOW_rule__ModelRoot__NameAssignment_1_in_rule__ModelRoot__Group__1__Impl1145);
            rule__ModelRoot__NameAssignment_1();

            state._fsp--;


            }

             after(grammarAccess.getModelRootAccess().getNameAssignment_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ModelRoot__Group__1__Impl"


    // $ANTLR start "rule__ModelRoot__Group__2"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:574:1: rule__ModelRoot__Group__2 : rule__ModelRoot__Group__2__Impl rule__ModelRoot__Group__3 ;
    public final void rule__ModelRoot__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:578:1: ( rule__ModelRoot__Group__2__Impl rule__ModelRoot__Group__3 )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:579:2: rule__ModelRoot__Group__2__Impl rule__ModelRoot__Group__3
            {
            pushFollow(FollowSets000.FOLLOW_rule__ModelRoot__Group__2__Impl_in_rule__ModelRoot__Group__21175);
            rule__ModelRoot__Group__2__Impl();

            state._fsp--;

            pushFollow(FollowSets000.FOLLOW_rule__ModelRoot__Group__3_in_rule__ModelRoot__Group__21178);
            rule__ModelRoot__Group__3();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ModelRoot__Group__2"


    // $ANTLR start "rule__ModelRoot__Group__2__Impl"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:586:1: rule__ModelRoot__Group__2__Impl : ( ( rule__ModelRoot__Group_2__0 )? ) ;
    public final void rule__ModelRoot__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:590:1: ( ( ( rule__ModelRoot__Group_2__0 )? ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:591:1: ( ( rule__ModelRoot__Group_2__0 )? )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:591:1: ( ( rule__ModelRoot__Group_2__0 )? )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:592:1: ( rule__ModelRoot__Group_2__0 )?
            {
             before(grammarAccess.getModelRootAccess().getGroup_2()); 
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:593:1: ( rule__ModelRoot__Group_2__0 )?
            int alt5=2;
            int LA5_0 = input.LA(1);

            if ( (LA5_0==18) ) {
                alt5=1;
            }
            switch (alt5) {
                case 1 :
                    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:593:2: rule__ModelRoot__Group_2__0
                    {
                    pushFollow(FollowSets000.FOLLOW_rule__ModelRoot__Group_2__0_in_rule__ModelRoot__Group__2__Impl1205);
                    rule__ModelRoot__Group_2__0();

                    state._fsp--;


                    }
                    break;

            }

             after(grammarAccess.getModelRootAccess().getGroup_2()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ModelRoot__Group__2__Impl"


    // $ANTLR start "rule__ModelRoot__Group__3"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:603:1: rule__ModelRoot__Group__3 : rule__ModelRoot__Group__3__Impl rule__ModelRoot__Group__4 ;
    public final void rule__ModelRoot__Group__3() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:607:1: ( rule__ModelRoot__Group__3__Impl rule__ModelRoot__Group__4 )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:608:2: rule__ModelRoot__Group__3__Impl rule__ModelRoot__Group__4
            {
            pushFollow(FollowSets000.FOLLOW_rule__ModelRoot__Group__3__Impl_in_rule__ModelRoot__Group__31236);
            rule__ModelRoot__Group__3__Impl();

            state._fsp--;

            pushFollow(FollowSets000.FOLLOW_rule__ModelRoot__Group__4_in_rule__ModelRoot__Group__31239);
            rule__ModelRoot__Group__4();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ModelRoot__Group__3"


    // $ANTLR start "rule__ModelRoot__Group__3__Impl"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:615:1: rule__ModelRoot__Group__3__Impl : ( ( rule__ModelRoot__MappingsAssignment_3 ) ) ;
    public final void rule__ModelRoot__Group__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:619:1: ( ( ( rule__ModelRoot__MappingsAssignment_3 ) ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:620:1: ( ( rule__ModelRoot__MappingsAssignment_3 ) )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:620:1: ( ( rule__ModelRoot__MappingsAssignment_3 ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:621:1: ( rule__ModelRoot__MappingsAssignment_3 )
            {
             before(grammarAccess.getModelRootAccess().getMappingsAssignment_3()); 
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:622:1: ( rule__ModelRoot__MappingsAssignment_3 )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:622:2: rule__ModelRoot__MappingsAssignment_3
            {
            pushFollow(FollowSets000.FOLLOW_rule__ModelRoot__MappingsAssignment_3_in_rule__ModelRoot__Group__3__Impl1266);
            rule__ModelRoot__MappingsAssignment_3();

            state._fsp--;


            }

             after(grammarAccess.getModelRootAccess().getMappingsAssignment_3()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ModelRoot__Group__3__Impl"


    // $ANTLR start "rule__ModelRoot__Group__4"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:632:1: rule__ModelRoot__Group__4 : rule__ModelRoot__Group__4__Impl ;
    public final void rule__ModelRoot__Group__4() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:636:1: ( rule__ModelRoot__Group__4__Impl )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:637:2: rule__ModelRoot__Group__4__Impl
            {
            pushFollow(FollowSets000.FOLLOW_rule__ModelRoot__Group__4__Impl_in_rule__ModelRoot__Group__41296);
            rule__ModelRoot__Group__4__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ModelRoot__Group__4"


    // $ANTLR start "rule__ModelRoot__Group__4__Impl"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:643:1: rule__ModelRoot__Group__4__Impl : ( ( rule__ModelRoot__MappingsAssignment_4 )* ) ;
    public final void rule__ModelRoot__Group__4__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:647:1: ( ( ( rule__ModelRoot__MappingsAssignment_4 )* ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:648:1: ( ( rule__ModelRoot__MappingsAssignment_4 )* )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:648:1: ( ( rule__ModelRoot__MappingsAssignment_4 )* )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:649:1: ( rule__ModelRoot__MappingsAssignment_4 )*
            {
             before(grammarAccess.getModelRootAccess().getMappingsAssignment_4()); 
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:650:1: ( rule__ModelRoot__MappingsAssignment_4 )*
            loop6:
            do {
                int alt6=2;
                int LA6_0 = input.LA(1);

                if ( (LA6_0==RULE_ID||(LA6_0>=14 && LA6_0<=16)) ) {
                    alt6=1;
                }


                switch (alt6) {
            	case 1 :
            	    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:650:2: rule__ModelRoot__MappingsAssignment_4
            	    {
            	    pushFollow(FollowSets000.FOLLOW_rule__ModelRoot__MappingsAssignment_4_in_rule__ModelRoot__Group__4__Impl1323);
            	    rule__ModelRoot__MappingsAssignment_4();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop6;
                }
            } while (true);

             after(grammarAccess.getModelRootAccess().getMappingsAssignment_4()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ModelRoot__Group__4__Impl"


    // $ANTLR start "rule__ModelRoot__Group_2__0"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:670:1: rule__ModelRoot__Group_2__0 : rule__ModelRoot__Group_2__0__Impl rule__ModelRoot__Group_2__1 ;
    public final void rule__ModelRoot__Group_2__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:674:1: ( rule__ModelRoot__Group_2__0__Impl rule__ModelRoot__Group_2__1 )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:675:2: rule__ModelRoot__Group_2__0__Impl rule__ModelRoot__Group_2__1
            {
            pushFollow(FollowSets000.FOLLOW_rule__ModelRoot__Group_2__0__Impl_in_rule__ModelRoot__Group_2__01364);
            rule__ModelRoot__Group_2__0__Impl();

            state._fsp--;

            pushFollow(FollowSets000.FOLLOW_rule__ModelRoot__Group_2__1_in_rule__ModelRoot__Group_2__01367);
            rule__ModelRoot__Group_2__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ModelRoot__Group_2__0"


    // $ANTLR start "rule__ModelRoot__Group_2__0__Impl"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:682:1: rule__ModelRoot__Group_2__0__Impl : ( '{' ) ;
    public final void rule__ModelRoot__Group_2__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:686:1: ( ( '{' ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:687:1: ( '{' )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:687:1: ( '{' )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:688:1: '{'
            {
             before(grammarAccess.getModelRootAccess().getLeftCurlyBracketKeyword_2_0()); 
            match(input,18,FollowSets000.FOLLOW_18_in_rule__ModelRoot__Group_2__0__Impl1395); 
             after(grammarAccess.getModelRootAccess().getLeftCurlyBracketKeyword_2_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ModelRoot__Group_2__0__Impl"


    // $ANTLR start "rule__ModelRoot__Group_2__1"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:701:1: rule__ModelRoot__Group_2__1 : rule__ModelRoot__Group_2__1__Impl rule__ModelRoot__Group_2__2 ;
    public final void rule__ModelRoot__Group_2__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:705:1: ( rule__ModelRoot__Group_2__1__Impl rule__ModelRoot__Group_2__2 )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:706:2: rule__ModelRoot__Group_2__1__Impl rule__ModelRoot__Group_2__2
            {
            pushFollow(FollowSets000.FOLLOW_rule__ModelRoot__Group_2__1__Impl_in_rule__ModelRoot__Group_2__11426);
            rule__ModelRoot__Group_2__1__Impl();

            state._fsp--;

            pushFollow(FollowSets000.FOLLOW_rule__ModelRoot__Group_2__2_in_rule__ModelRoot__Group_2__11429);
            rule__ModelRoot__Group_2__2();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ModelRoot__Group_2__1"


    // $ANTLR start "rule__ModelRoot__Group_2__1__Impl"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:713:1: rule__ModelRoot__Group_2__1__Impl : ( ( rule__ModelRoot__ModulesAssignment_2_1 ) ) ;
    public final void rule__ModelRoot__Group_2__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:717:1: ( ( ( rule__ModelRoot__ModulesAssignment_2_1 ) ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:718:1: ( ( rule__ModelRoot__ModulesAssignment_2_1 ) )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:718:1: ( ( rule__ModelRoot__ModulesAssignment_2_1 ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:719:1: ( rule__ModelRoot__ModulesAssignment_2_1 )
            {
             before(grammarAccess.getModelRootAccess().getModulesAssignment_2_1()); 
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:720:1: ( rule__ModelRoot__ModulesAssignment_2_1 )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:720:2: rule__ModelRoot__ModulesAssignment_2_1
            {
            pushFollow(FollowSets000.FOLLOW_rule__ModelRoot__ModulesAssignment_2_1_in_rule__ModelRoot__Group_2__1__Impl1456);
            rule__ModelRoot__ModulesAssignment_2_1();

            state._fsp--;


            }

             after(grammarAccess.getModelRootAccess().getModulesAssignment_2_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ModelRoot__Group_2__1__Impl"


    // $ANTLR start "rule__ModelRoot__Group_2__2"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:730:1: rule__ModelRoot__Group_2__2 : rule__ModelRoot__Group_2__2__Impl rule__ModelRoot__Group_2__3 ;
    public final void rule__ModelRoot__Group_2__2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:734:1: ( rule__ModelRoot__Group_2__2__Impl rule__ModelRoot__Group_2__3 )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:735:2: rule__ModelRoot__Group_2__2__Impl rule__ModelRoot__Group_2__3
            {
            pushFollow(FollowSets000.FOLLOW_rule__ModelRoot__Group_2__2__Impl_in_rule__ModelRoot__Group_2__21486);
            rule__ModelRoot__Group_2__2__Impl();

            state._fsp--;

            pushFollow(FollowSets000.FOLLOW_rule__ModelRoot__Group_2__3_in_rule__ModelRoot__Group_2__21489);
            rule__ModelRoot__Group_2__3();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ModelRoot__Group_2__2"


    // $ANTLR start "rule__ModelRoot__Group_2__2__Impl"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:742:1: rule__ModelRoot__Group_2__2__Impl : ( ( rule__ModelRoot__ModulesAssignment_2_2 )* ) ;
    public final void rule__ModelRoot__Group_2__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:746:1: ( ( ( rule__ModelRoot__ModulesAssignment_2_2 )* ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:747:1: ( ( rule__ModelRoot__ModulesAssignment_2_2 )* )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:747:1: ( ( rule__ModelRoot__ModulesAssignment_2_2 )* )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:748:1: ( rule__ModelRoot__ModulesAssignment_2_2 )*
            {
             before(grammarAccess.getModelRootAccess().getModulesAssignment_2_2()); 
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:749:1: ( rule__ModelRoot__ModulesAssignment_2_2 )*
            loop7:
            do {
                int alt7=2;
                int LA7_0 = input.LA(1);

                if ( (LA7_0==RULE_ID) ) {
                    alt7=1;
                }


                switch (alt7) {
            	case 1 :
            	    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:749:2: rule__ModelRoot__ModulesAssignment_2_2
            	    {
            	    pushFollow(FollowSets000.FOLLOW_rule__ModelRoot__ModulesAssignment_2_2_in_rule__ModelRoot__Group_2__2__Impl1516);
            	    rule__ModelRoot__ModulesAssignment_2_2();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop7;
                }
            } while (true);

             after(grammarAccess.getModelRootAccess().getModulesAssignment_2_2()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ModelRoot__Group_2__2__Impl"


    // $ANTLR start "rule__ModelRoot__Group_2__3"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:759:1: rule__ModelRoot__Group_2__3 : rule__ModelRoot__Group_2__3__Impl ;
    public final void rule__ModelRoot__Group_2__3() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:763:1: ( rule__ModelRoot__Group_2__3__Impl )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:764:2: rule__ModelRoot__Group_2__3__Impl
            {
            pushFollow(FollowSets000.FOLLOW_rule__ModelRoot__Group_2__3__Impl_in_rule__ModelRoot__Group_2__31547);
            rule__ModelRoot__Group_2__3__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ModelRoot__Group_2__3"


    // $ANTLR start "rule__ModelRoot__Group_2__3__Impl"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:770:1: rule__ModelRoot__Group_2__3__Impl : ( '}' ) ;
    public final void rule__ModelRoot__Group_2__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:774:1: ( ( '}' ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:775:1: ( '}' )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:775:1: ( '}' )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:776:1: '}'
            {
             before(grammarAccess.getModelRootAccess().getRightCurlyBracketKeyword_2_3()); 
            match(input,19,FollowSets000.FOLLOW_19_in_rule__ModelRoot__Group_2__3__Impl1575); 
             after(grammarAccess.getModelRootAccess().getRightCurlyBracketKeyword_2_3()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ModelRoot__Group_2__3__Impl"


    // $ANTLR start "rule__BinaryFeatureExpression__Group__0"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:797:1: rule__BinaryFeatureExpression__Group__0 : rule__BinaryFeatureExpression__Group__0__Impl rule__BinaryFeatureExpression__Group__1 ;
    public final void rule__BinaryFeatureExpression__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:801:1: ( rule__BinaryFeatureExpression__Group__0__Impl rule__BinaryFeatureExpression__Group__1 )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:802:2: rule__BinaryFeatureExpression__Group__0__Impl rule__BinaryFeatureExpression__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_rule__BinaryFeatureExpression__Group__0__Impl_in_rule__BinaryFeatureExpression__Group__01614);
            rule__BinaryFeatureExpression__Group__0__Impl();

            state._fsp--;

            pushFollow(FollowSets000.FOLLOW_rule__BinaryFeatureExpression__Group__1_in_rule__BinaryFeatureExpression__Group__01617);
            rule__BinaryFeatureExpression__Group__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__BinaryFeatureExpression__Group__0"


    // $ANTLR start "rule__BinaryFeatureExpression__Group__0__Impl"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:809:1: rule__BinaryFeatureExpression__Group__0__Impl : ( ( rule__BinaryFeatureExpression__Alternatives_0 ) ) ;
    public final void rule__BinaryFeatureExpression__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:813:1: ( ( ( rule__BinaryFeatureExpression__Alternatives_0 ) ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:814:1: ( ( rule__BinaryFeatureExpression__Alternatives_0 ) )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:814:1: ( ( rule__BinaryFeatureExpression__Alternatives_0 ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:815:1: ( rule__BinaryFeatureExpression__Alternatives_0 )
            {
             before(grammarAccess.getBinaryFeatureExpressionAccess().getAlternatives_0()); 
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:816:1: ( rule__BinaryFeatureExpression__Alternatives_0 )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:816:2: rule__BinaryFeatureExpression__Alternatives_0
            {
            pushFollow(FollowSets000.FOLLOW_rule__BinaryFeatureExpression__Alternatives_0_in_rule__BinaryFeatureExpression__Group__0__Impl1644);
            rule__BinaryFeatureExpression__Alternatives_0();

            state._fsp--;


            }

             after(grammarAccess.getBinaryFeatureExpressionAccess().getAlternatives_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__BinaryFeatureExpression__Group__0__Impl"


    // $ANTLR start "rule__BinaryFeatureExpression__Group__1"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:826:1: rule__BinaryFeatureExpression__Group__1 : rule__BinaryFeatureExpression__Group__1__Impl ;
    public final void rule__BinaryFeatureExpression__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:830:1: ( rule__BinaryFeatureExpression__Group__1__Impl )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:831:2: rule__BinaryFeatureExpression__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_rule__BinaryFeatureExpression__Group__1__Impl_in_rule__BinaryFeatureExpression__Group__11674);
            rule__BinaryFeatureExpression__Group__1__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__BinaryFeatureExpression__Group__1"


    // $ANTLR start "rule__BinaryFeatureExpression__Group__1__Impl"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:837:1: rule__BinaryFeatureExpression__Group__1__Impl : ( ( rule__BinaryFeatureExpression__Group_1__0 )? ) ;
    public final void rule__BinaryFeatureExpression__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:841:1: ( ( ( rule__BinaryFeatureExpression__Group_1__0 )? ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:842:1: ( ( rule__BinaryFeatureExpression__Group_1__0 )? )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:842:1: ( ( rule__BinaryFeatureExpression__Group_1__0 )? )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:843:1: ( rule__BinaryFeatureExpression__Group_1__0 )?
            {
             before(grammarAccess.getBinaryFeatureExpressionAccess().getGroup_1()); 
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:844:1: ( rule__BinaryFeatureExpression__Group_1__0 )?
            int alt8=2;
            int LA8_0 = input.LA(1);

            if ( ((LA8_0>=14 && LA8_0<=16)) ) {
                alt8=1;
            }
            switch (alt8) {
                case 1 :
                    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:844:2: rule__BinaryFeatureExpression__Group_1__0
                    {
                    pushFollow(FollowSets000.FOLLOW_rule__BinaryFeatureExpression__Group_1__0_in_rule__BinaryFeatureExpression__Group__1__Impl1701);
                    rule__BinaryFeatureExpression__Group_1__0();

                    state._fsp--;


                    }
                    break;

            }

             after(grammarAccess.getBinaryFeatureExpressionAccess().getGroup_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__BinaryFeatureExpression__Group__1__Impl"


    // $ANTLR start "rule__BinaryFeatureExpression__Group_1__0"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:858:1: rule__BinaryFeatureExpression__Group_1__0 : rule__BinaryFeatureExpression__Group_1__0__Impl rule__BinaryFeatureExpression__Group_1__1 ;
    public final void rule__BinaryFeatureExpression__Group_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:862:1: ( rule__BinaryFeatureExpression__Group_1__0__Impl rule__BinaryFeatureExpression__Group_1__1 )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:863:2: rule__BinaryFeatureExpression__Group_1__0__Impl rule__BinaryFeatureExpression__Group_1__1
            {
            pushFollow(FollowSets000.FOLLOW_rule__BinaryFeatureExpression__Group_1__0__Impl_in_rule__BinaryFeatureExpression__Group_1__01736);
            rule__BinaryFeatureExpression__Group_1__0__Impl();

            state._fsp--;

            pushFollow(FollowSets000.FOLLOW_rule__BinaryFeatureExpression__Group_1__1_in_rule__BinaryFeatureExpression__Group_1__01739);
            rule__BinaryFeatureExpression__Group_1__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__BinaryFeatureExpression__Group_1__0"


    // $ANTLR start "rule__BinaryFeatureExpression__Group_1__0__Impl"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:870:1: rule__BinaryFeatureExpression__Group_1__0__Impl : ( () ) ;
    public final void rule__BinaryFeatureExpression__Group_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:874:1: ( ( () ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:875:1: ( () )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:875:1: ( () )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:876:1: ()
            {
             before(grammarAccess.getBinaryFeatureExpressionAccess().getBinaryFeatureExpressionLeftAction_1_0()); 
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:877:1: ()
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:879:1: 
            {
            }

             after(grammarAccess.getBinaryFeatureExpressionAccess().getBinaryFeatureExpressionLeftAction_1_0()); 

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__BinaryFeatureExpression__Group_1__0__Impl"


    // $ANTLR start "rule__BinaryFeatureExpression__Group_1__1"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:889:1: rule__BinaryFeatureExpression__Group_1__1 : rule__BinaryFeatureExpression__Group_1__1__Impl rule__BinaryFeatureExpression__Group_1__2 ;
    public final void rule__BinaryFeatureExpression__Group_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:893:1: ( rule__BinaryFeatureExpression__Group_1__1__Impl rule__BinaryFeatureExpression__Group_1__2 )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:894:2: rule__BinaryFeatureExpression__Group_1__1__Impl rule__BinaryFeatureExpression__Group_1__2
            {
            pushFollow(FollowSets000.FOLLOW_rule__BinaryFeatureExpression__Group_1__1__Impl_in_rule__BinaryFeatureExpression__Group_1__11797);
            rule__BinaryFeatureExpression__Group_1__1__Impl();

            state._fsp--;

            pushFollow(FollowSets000.FOLLOW_rule__BinaryFeatureExpression__Group_1__2_in_rule__BinaryFeatureExpression__Group_1__11800);
            rule__BinaryFeatureExpression__Group_1__2();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__BinaryFeatureExpression__Group_1__1"


    // $ANTLR start "rule__BinaryFeatureExpression__Group_1__1__Impl"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:901:1: rule__BinaryFeatureExpression__Group_1__1__Impl : ( ( rule__BinaryFeatureExpression__OperatorAssignment_1_1 ) ) ;
    public final void rule__BinaryFeatureExpression__Group_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:905:1: ( ( ( rule__BinaryFeatureExpression__OperatorAssignment_1_1 ) ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:906:1: ( ( rule__BinaryFeatureExpression__OperatorAssignment_1_1 ) )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:906:1: ( ( rule__BinaryFeatureExpression__OperatorAssignment_1_1 ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:907:1: ( rule__BinaryFeatureExpression__OperatorAssignment_1_1 )
            {
             before(grammarAccess.getBinaryFeatureExpressionAccess().getOperatorAssignment_1_1()); 
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:908:1: ( rule__BinaryFeatureExpression__OperatorAssignment_1_1 )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:908:2: rule__BinaryFeatureExpression__OperatorAssignment_1_1
            {
            pushFollow(FollowSets000.FOLLOW_rule__BinaryFeatureExpression__OperatorAssignment_1_1_in_rule__BinaryFeatureExpression__Group_1__1__Impl1827);
            rule__BinaryFeatureExpression__OperatorAssignment_1_1();

            state._fsp--;


            }

             after(grammarAccess.getBinaryFeatureExpressionAccess().getOperatorAssignment_1_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__BinaryFeatureExpression__Group_1__1__Impl"


    // $ANTLR start "rule__BinaryFeatureExpression__Group_1__2"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:918:1: rule__BinaryFeatureExpression__Group_1__2 : rule__BinaryFeatureExpression__Group_1__2__Impl ;
    public final void rule__BinaryFeatureExpression__Group_1__2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:922:1: ( rule__BinaryFeatureExpression__Group_1__2__Impl )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:923:2: rule__BinaryFeatureExpression__Group_1__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_rule__BinaryFeatureExpression__Group_1__2__Impl_in_rule__BinaryFeatureExpression__Group_1__21857);
            rule__BinaryFeatureExpression__Group_1__2__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__BinaryFeatureExpression__Group_1__2"


    // $ANTLR start "rule__BinaryFeatureExpression__Group_1__2__Impl"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:929:1: rule__BinaryFeatureExpression__Group_1__2__Impl : ( ( rule__BinaryFeatureExpression__RightAssignment_1_2 ) ) ;
    public final void rule__BinaryFeatureExpression__Group_1__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:933:1: ( ( ( rule__BinaryFeatureExpression__RightAssignment_1_2 ) ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:934:1: ( ( rule__BinaryFeatureExpression__RightAssignment_1_2 ) )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:934:1: ( ( rule__BinaryFeatureExpression__RightAssignment_1_2 ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:935:1: ( rule__BinaryFeatureExpression__RightAssignment_1_2 )
            {
             before(grammarAccess.getBinaryFeatureExpressionAccess().getRightAssignment_1_2()); 
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:936:1: ( rule__BinaryFeatureExpression__RightAssignment_1_2 )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:936:2: rule__BinaryFeatureExpression__RightAssignment_1_2
            {
            pushFollow(FollowSets000.FOLLOW_rule__BinaryFeatureExpression__RightAssignment_1_2_in_rule__BinaryFeatureExpression__Group_1__2__Impl1884);
            rule__BinaryFeatureExpression__RightAssignment_1_2();

            state._fsp--;


            }

             after(grammarAccess.getBinaryFeatureExpressionAccess().getRightAssignment_1_2()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__BinaryFeatureExpression__Group_1__2__Impl"


    // $ANTLR start "rule__UnaryFeatureExpression__Group__0"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:952:1: rule__UnaryFeatureExpression__Group__0 : rule__UnaryFeatureExpression__Group__0__Impl rule__UnaryFeatureExpression__Group__1 ;
    public final void rule__UnaryFeatureExpression__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:956:1: ( rule__UnaryFeatureExpression__Group__0__Impl rule__UnaryFeatureExpression__Group__1 )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:957:2: rule__UnaryFeatureExpression__Group__0__Impl rule__UnaryFeatureExpression__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_rule__UnaryFeatureExpression__Group__0__Impl_in_rule__UnaryFeatureExpression__Group__01920);
            rule__UnaryFeatureExpression__Group__0__Impl();

            state._fsp--;

            pushFollow(FollowSets000.FOLLOW_rule__UnaryFeatureExpression__Group__1_in_rule__UnaryFeatureExpression__Group__01923);
            rule__UnaryFeatureExpression__Group__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnaryFeatureExpression__Group__0"


    // $ANTLR start "rule__UnaryFeatureExpression__Group__0__Impl"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:964:1: rule__UnaryFeatureExpression__Group__0__Impl : ( ( rule__UnaryFeatureExpression__OperatorAssignment_0 ) ) ;
    public final void rule__UnaryFeatureExpression__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:968:1: ( ( ( rule__UnaryFeatureExpression__OperatorAssignment_0 ) ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:969:1: ( ( rule__UnaryFeatureExpression__OperatorAssignment_0 ) )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:969:1: ( ( rule__UnaryFeatureExpression__OperatorAssignment_0 ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:970:1: ( rule__UnaryFeatureExpression__OperatorAssignment_0 )
            {
             before(grammarAccess.getUnaryFeatureExpressionAccess().getOperatorAssignment_0()); 
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:971:1: ( rule__UnaryFeatureExpression__OperatorAssignment_0 )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:971:2: rule__UnaryFeatureExpression__OperatorAssignment_0
            {
            pushFollow(FollowSets000.FOLLOW_rule__UnaryFeatureExpression__OperatorAssignment_0_in_rule__UnaryFeatureExpression__Group__0__Impl1950);
            rule__UnaryFeatureExpression__OperatorAssignment_0();

            state._fsp--;


            }

             after(grammarAccess.getUnaryFeatureExpressionAccess().getOperatorAssignment_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnaryFeatureExpression__Group__0__Impl"


    // $ANTLR start "rule__UnaryFeatureExpression__Group__1"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:981:1: rule__UnaryFeatureExpression__Group__1 : rule__UnaryFeatureExpression__Group__1__Impl ;
    public final void rule__UnaryFeatureExpression__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:985:1: ( rule__UnaryFeatureExpression__Group__1__Impl )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:986:2: rule__UnaryFeatureExpression__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_rule__UnaryFeatureExpression__Group__1__Impl_in_rule__UnaryFeatureExpression__Group__11980);
            rule__UnaryFeatureExpression__Group__1__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnaryFeatureExpression__Group__1"


    // $ANTLR start "rule__UnaryFeatureExpression__Group__1__Impl"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:992:1: rule__UnaryFeatureExpression__Group__1__Impl : ( ( rule__UnaryFeatureExpression__ExprAssignment_1 ) ) ;
    public final void rule__UnaryFeatureExpression__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:996:1: ( ( ( rule__UnaryFeatureExpression__ExprAssignment_1 ) ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:997:1: ( ( rule__UnaryFeatureExpression__ExprAssignment_1 ) )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:997:1: ( ( rule__UnaryFeatureExpression__ExprAssignment_1 ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:998:1: ( rule__UnaryFeatureExpression__ExprAssignment_1 )
            {
             before(grammarAccess.getUnaryFeatureExpressionAccess().getExprAssignment_1()); 
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:999:1: ( rule__UnaryFeatureExpression__ExprAssignment_1 )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:999:2: rule__UnaryFeatureExpression__ExprAssignment_1
            {
            pushFollow(FollowSets000.FOLLOW_rule__UnaryFeatureExpression__ExprAssignment_1_in_rule__UnaryFeatureExpression__Group__1__Impl2007);
            rule__UnaryFeatureExpression__ExprAssignment_1();

            state._fsp--;


            }

             after(grammarAccess.getUnaryFeatureExpressionAccess().getExprAssignment_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnaryFeatureExpression__Group__1__Impl"


    // $ANTLR start "rule__Mapping__Group__0"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1013:1: rule__Mapping__Group__0 : rule__Mapping__Group__0__Impl rule__Mapping__Group__1 ;
    public final void rule__Mapping__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1017:1: ( rule__Mapping__Group__0__Impl rule__Mapping__Group__1 )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1018:2: rule__Mapping__Group__0__Impl rule__Mapping__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_rule__Mapping__Group__0__Impl_in_rule__Mapping__Group__02041);
            rule__Mapping__Group__0__Impl();

            state._fsp--;

            pushFollow(FollowSets000.FOLLOW_rule__Mapping__Group__1_in_rule__Mapping__Group__02044);
            rule__Mapping__Group__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Mapping__Group__0"


    // $ANTLR start "rule__Mapping__Group__0__Impl"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1025:1: rule__Mapping__Group__0__Impl : ( ( rule__Mapping__ExprAssignment_0 ) ) ;
    public final void rule__Mapping__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1029:1: ( ( ( rule__Mapping__ExprAssignment_0 ) ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1030:1: ( ( rule__Mapping__ExprAssignment_0 ) )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1030:1: ( ( rule__Mapping__ExprAssignment_0 ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1031:1: ( rule__Mapping__ExprAssignment_0 )
            {
             before(grammarAccess.getMappingAccess().getExprAssignment_0()); 
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1032:1: ( rule__Mapping__ExprAssignment_0 )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1032:2: rule__Mapping__ExprAssignment_0
            {
            pushFollow(FollowSets000.FOLLOW_rule__Mapping__ExprAssignment_0_in_rule__Mapping__Group__0__Impl2071);
            rule__Mapping__ExprAssignment_0();

            state._fsp--;


            }

             after(grammarAccess.getMappingAccess().getExprAssignment_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Mapping__Group__0__Impl"


    // $ANTLR start "rule__Mapping__Group__1"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1042:1: rule__Mapping__Group__1 : rule__Mapping__Group__1__Impl rule__Mapping__Group__2 ;
    public final void rule__Mapping__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1046:1: ( rule__Mapping__Group__1__Impl rule__Mapping__Group__2 )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1047:2: rule__Mapping__Group__1__Impl rule__Mapping__Group__2
            {
            pushFollow(FollowSets000.FOLLOW_rule__Mapping__Group__1__Impl_in_rule__Mapping__Group__12101);
            rule__Mapping__Group__1__Impl();

            state._fsp--;

            pushFollow(FollowSets000.FOLLOW_rule__Mapping__Group__2_in_rule__Mapping__Group__12104);
            rule__Mapping__Group__2();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Mapping__Group__1"


    // $ANTLR start "rule__Mapping__Group__1__Impl"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1054:1: rule__Mapping__Group__1__Impl : ( ':' ) ;
    public final void rule__Mapping__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1058:1: ( ( ':' ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1059:1: ( ':' )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1059:1: ( ':' )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1060:1: ':'
            {
             before(grammarAccess.getMappingAccess().getColonKeyword_1()); 
            match(input,20,FollowSets000.FOLLOW_20_in_rule__Mapping__Group__1__Impl2132); 
             after(grammarAccess.getMappingAccess().getColonKeyword_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Mapping__Group__1__Impl"


    // $ANTLR start "rule__Mapping__Group__2"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1073:1: rule__Mapping__Group__2 : rule__Mapping__Group__2__Impl rule__Mapping__Group__3 ;
    public final void rule__Mapping__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1077:1: ( rule__Mapping__Group__2__Impl rule__Mapping__Group__3 )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1078:2: rule__Mapping__Group__2__Impl rule__Mapping__Group__3
            {
            pushFollow(FollowSets000.FOLLOW_rule__Mapping__Group__2__Impl_in_rule__Mapping__Group__22163);
            rule__Mapping__Group__2__Impl();

            state._fsp--;

            pushFollow(FollowSets000.FOLLOW_rule__Mapping__Group__3_in_rule__Mapping__Group__22166);
            rule__Mapping__Group__3();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Mapping__Group__2"


    // $ANTLR start "rule__Mapping__Group__2__Impl"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1085:1: rule__Mapping__Group__2__Impl : ( ( rule__Mapping__Group_2__0 )? ) ;
    public final void rule__Mapping__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1089:1: ( ( ( rule__Mapping__Group_2__0 )? ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1090:1: ( ( rule__Mapping__Group_2__0 )? )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1090:1: ( ( rule__Mapping__Group_2__0 )? )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1091:1: ( rule__Mapping__Group_2__0 )?
            {
             before(grammarAccess.getMappingAccess().getGroup_2()); 
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1092:1: ( rule__Mapping__Group_2__0 )?
            int alt9=2;
            int LA9_0 = input.LA(1);

            if ( ((LA9_0>=RULE_STRING && LA9_0<=RULE_ID)) ) {
                alt9=1;
            }
            switch (alt9) {
                case 1 :
                    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1092:2: rule__Mapping__Group_2__0
                    {
                    pushFollow(FollowSets000.FOLLOW_rule__Mapping__Group_2__0_in_rule__Mapping__Group__2__Impl2193);
                    rule__Mapping__Group_2__0();

                    state._fsp--;


                    }
                    break;

            }

             after(grammarAccess.getMappingAccess().getGroup_2()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Mapping__Group__2__Impl"


    // $ANTLR start "rule__Mapping__Group__3"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1102:1: rule__Mapping__Group__3 : rule__Mapping__Group__3__Impl ;
    public final void rule__Mapping__Group__3() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1106:1: ( rule__Mapping__Group__3__Impl )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1107:2: rule__Mapping__Group__3__Impl
            {
            pushFollow(FollowSets000.FOLLOW_rule__Mapping__Group__3__Impl_in_rule__Mapping__Group__32224);
            rule__Mapping__Group__3__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Mapping__Group__3"


    // $ANTLR start "rule__Mapping__Group__3__Impl"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1113:1: rule__Mapping__Group__3__Impl : ( ';' ) ;
    public final void rule__Mapping__Group__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1117:1: ( ( ';' ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1118:1: ( ';' )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1118:1: ( ';' )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1119:1: ';'
            {
             before(grammarAccess.getMappingAccess().getSemicolonKeyword_3()); 
            match(input,21,FollowSets000.FOLLOW_21_in_rule__Mapping__Group__3__Impl2252); 
             after(grammarAccess.getMappingAccess().getSemicolonKeyword_3()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Mapping__Group__3__Impl"


    // $ANTLR start "rule__Mapping__Group_2__0"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1140:1: rule__Mapping__Group_2__0 : rule__Mapping__Group_2__0__Impl rule__Mapping__Group_2__1 ;
    public final void rule__Mapping__Group_2__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1144:1: ( rule__Mapping__Group_2__0__Impl rule__Mapping__Group_2__1 )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1145:2: rule__Mapping__Group_2__0__Impl rule__Mapping__Group_2__1
            {
            pushFollow(FollowSets000.FOLLOW_rule__Mapping__Group_2__0__Impl_in_rule__Mapping__Group_2__02291);
            rule__Mapping__Group_2__0__Impl();

            state._fsp--;

            pushFollow(FollowSets000.FOLLOW_rule__Mapping__Group_2__1_in_rule__Mapping__Group_2__02294);
            rule__Mapping__Group_2__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Mapping__Group_2__0"


    // $ANTLR start "rule__Mapping__Group_2__0__Impl"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1152:1: rule__Mapping__Group_2__0__Impl : ( ( rule__Mapping__MappingAssignment_2_0 ) ) ;
    public final void rule__Mapping__Group_2__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1156:1: ( ( ( rule__Mapping__MappingAssignment_2_0 ) ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1157:1: ( ( rule__Mapping__MappingAssignment_2_0 ) )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1157:1: ( ( rule__Mapping__MappingAssignment_2_0 ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1158:1: ( rule__Mapping__MappingAssignment_2_0 )
            {
             before(grammarAccess.getMappingAccess().getMappingAssignment_2_0()); 
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1159:1: ( rule__Mapping__MappingAssignment_2_0 )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1159:2: rule__Mapping__MappingAssignment_2_0
            {
            pushFollow(FollowSets000.FOLLOW_rule__Mapping__MappingAssignment_2_0_in_rule__Mapping__Group_2__0__Impl2321);
            rule__Mapping__MappingAssignment_2_0();

            state._fsp--;


            }

             after(grammarAccess.getMappingAccess().getMappingAssignment_2_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Mapping__Group_2__0__Impl"


    // $ANTLR start "rule__Mapping__Group_2__1"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1169:1: rule__Mapping__Group_2__1 : rule__Mapping__Group_2__1__Impl ;
    public final void rule__Mapping__Group_2__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1173:1: ( rule__Mapping__Group_2__1__Impl )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1174:2: rule__Mapping__Group_2__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_rule__Mapping__Group_2__1__Impl_in_rule__Mapping__Group_2__12351);
            rule__Mapping__Group_2__1__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Mapping__Group_2__1"


    // $ANTLR start "rule__Mapping__Group_2__1__Impl"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1180:1: rule__Mapping__Group_2__1__Impl : ( ( rule__Mapping__MappingAssignment_2_1 )* ) ;
    public final void rule__Mapping__Group_2__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1184:1: ( ( ( rule__Mapping__MappingAssignment_2_1 )* ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1185:1: ( ( rule__Mapping__MappingAssignment_2_1 )* )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1185:1: ( ( rule__Mapping__MappingAssignment_2_1 )* )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1186:1: ( rule__Mapping__MappingAssignment_2_1 )*
            {
             before(grammarAccess.getMappingAccess().getMappingAssignment_2_1()); 
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1187:1: ( rule__Mapping__MappingAssignment_2_1 )*
            loop10:
            do {
                int alt10=2;
                int LA10_0 = input.LA(1);

                if ( ((LA10_0>=RULE_STRING && LA10_0<=RULE_ID)) ) {
                    alt10=1;
                }


                switch (alt10) {
            	case 1 :
            	    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1187:2: rule__Mapping__MappingAssignment_2_1
            	    {
            	    pushFollow(FollowSets000.FOLLOW_rule__Mapping__MappingAssignment_2_1_in_rule__Mapping__Group_2__1__Impl2378);
            	    rule__Mapping__MappingAssignment_2_1();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop10;
                }
            } while (true);

             after(grammarAccess.getMappingAccess().getMappingAssignment_2_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Mapping__Group_2__1__Impl"


    // $ANTLR start "rule__FileMapping__Group__0"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1201:1: rule__FileMapping__Group__0 : rule__FileMapping__Group__0__Impl rule__FileMapping__Group__1 ;
    public final void rule__FileMapping__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1205:1: ( rule__FileMapping__Group__0__Impl rule__FileMapping__Group__1 )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1206:2: rule__FileMapping__Group__0__Impl rule__FileMapping__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_rule__FileMapping__Group__0__Impl_in_rule__FileMapping__Group__02413);
            rule__FileMapping__Group__0__Impl();

            state._fsp--;

            pushFollow(FollowSets000.FOLLOW_rule__FileMapping__Group__1_in_rule__FileMapping__Group__02416);
            rule__FileMapping__Group__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FileMapping__Group__0"


    // $ANTLR start "rule__FileMapping__Group__0__Impl"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1213:1: rule__FileMapping__Group__0__Impl : ( ( rule__FileMapping__ModuleAssignment_0 ) ) ;
    public final void rule__FileMapping__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1217:1: ( ( ( rule__FileMapping__ModuleAssignment_0 ) ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1218:1: ( ( rule__FileMapping__ModuleAssignment_0 ) )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1218:1: ( ( rule__FileMapping__ModuleAssignment_0 ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1219:1: ( rule__FileMapping__ModuleAssignment_0 )
            {
             before(grammarAccess.getFileMappingAccess().getModuleAssignment_0()); 
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1220:1: ( rule__FileMapping__ModuleAssignment_0 )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1220:2: rule__FileMapping__ModuleAssignment_0
            {
            pushFollow(FollowSets000.FOLLOW_rule__FileMapping__ModuleAssignment_0_in_rule__FileMapping__Group__0__Impl2443);
            rule__FileMapping__ModuleAssignment_0();

            state._fsp--;


            }

             after(grammarAccess.getFileMappingAccess().getModuleAssignment_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FileMapping__Group__0__Impl"


    // $ANTLR start "rule__FileMapping__Group__1"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1230:1: rule__FileMapping__Group__1 : rule__FileMapping__Group__1__Impl rule__FileMapping__Group__2 ;
    public final void rule__FileMapping__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1234:1: ( rule__FileMapping__Group__1__Impl rule__FileMapping__Group__2 )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1235:2: rule__FileMapping__Group__1__Impl rule__FileMapping__Group__2
            {
            pushFollow(FollowSets000.FOLLOW_rule__FileMapping__Group__1__Impl_in_rule__FileMapping__Group__12473);
            rule__FileMapping__Group__1__Impl();

            state._fsp--;

            pushFollow(FollowSets000.FOLLOW_rule__FileMapping__Group__2_in_rule__FileMapping__Group__12476);
            rule__FileMapping__Group__2();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FileMapping__Group__1"


    // $ANTLR start "rule__FileMapping__Group__1__Impl"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1242:1: rule__FileMapping__Group__1__Impl : ( '+=' ) ;
    public final void rule__FileMapping__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1246:1: ( ( '+=' ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1247:1: ( '+=' )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1247:1: ( '+=' )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1248:1: '+='
            {
             before(grammarAccess.getFileMappingAccess().getPlusSignEqualsSignKeyword_1()); 
            match(input,22,FollowSets000.FOLLOW_22_in_rule__FileMapping__Group__1__Impl2504); 
             after(grammarAccess.getFileMappingAccess().getPlusSignEqualsSignKeyword_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FileMapping__Group__1__Impl"


    // $ANTLR start "rule__FileMapping__Group__2"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1261:1: rule__FileMapping__Group__2 : rule__FileMapping__Group__2__Impl rule__FileMapping__Group__3 ;
    public final void rule__FileMapping__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1265:1: ( rule__FileMapping__Group__2__Impl rule__FileMapping__Group__3 )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1266:2: rule__FileMapping__Group__2__Impl rule__FileMapping__Group__3
            {
            pushFollow(FollowSets000.FOLLOW_rule__FileMapping__Group__2__Impl_in_rule__FileMapping__Group__22535);
            rule__FileMapping__Group__2__Impl();

            state._fsp--;

            pushFollow(FollowSets000.FOLLOW_rule__FileMapping__Group__3_in_rule__FileMapping__Group__22538);
            rule__FileMapping__Group__3();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FileMapping__Group__2"


    // $ANTLR start "rule__FileMapping__Group__2__Impl"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1273:1: rule__FileMapping__Group__2__Impl : ( ( rule__FileMapping__FilesAssignment_2 ) ) ;
    public final void rule__FileMapping__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1277:1: ( ( ( rule__FileMapping__FilesAssignment_2 ) ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1278:1: ( ( rule__FileMapping__FilesAssignment_2 ) )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1278:1: ( ( rule__FileMapping__FilesAssignment_2 ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1279:1: ( rule__FileMapping__FilesAssignment_2 )
            {
             before(grammarAccess.getFileMappingAccess().getFilesAssignment_2()); 
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1280:1: ( rule__FileMapping__FilesAssignment_2 )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1280:2: rule__FileMapping__FilesAssignment_2
            {
            pushFollow(FollowSets000.FOLLOW_rule__FileMapping__FilesAssignment_2_in_rule__FileMapping__Group__2__Impl2565);
            rule__FileMapping__FilesAssignment_2();

            state._fsp--;


            }

             after(grammarAccess.getFileMappingAccess().getFilesAssignment_2()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FileMapping__Group__2__Impl"


    // $ANTLR start "rule__FileMapping__Group__3"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1290:1: rule__FileMapping__Group__3 : rule__FileMapping__Group__3__Impl ;
    public final void rule__FileMapping__Group__3() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1294:1: ( rule__FileMapping__Group__3__Impl )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1295:2: rule__FileMapping__Group__3__Impl
            {
            pushFollow(FollowSets000.FOLLOW_rule__FileMapping__Group__3__Impl_in_rule__FileMapping__Group__32595);
            rule__FileMapping__Group__3__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FileMapping__Group__3"


    // $ANTLR start "rule__FileMapping__Group__3__Impl"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1301:1: rule__FileMapping__Group__3__Impl : ( ( rule__FileMapping__FilesAssignment_3 )* ) ;
    public final void rule__FileMapping__Group__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1305:1: ( ( ( rule__FileMapping__FilesAssignment_3 )* ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1306:1: ( ( rule__FileMapping__FilesAssignment_3 )* )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1306:1: ( ( rule__FileMapping__FilesAssignment_3 )* )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1307:1: ( rule__FileMapping__FilesAssignment_3 )*
            {
             before(grammarAccess.getFileMappingAccess().getFilesAssignment_3()); 
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1308:1: ( rule__FileMapping__FilesAssignment_3 )*
            loop11:
            do {
                int alt11=2;
                int LA11_0 = input.LA(1);

                if ( (LA11_0==RULE_ID) ) {
                    int LA11_2 = input.LA(2);

                    if ( (LA11_2==EOF||(LA11_2>=RULE_STRING && LA11_2<=RULE_ID)||(LA11_2>=11 && LA11_2<=13)||LA11_2==21) ) {
                        alt11=1;
                    }


                }


                switch (alt11) {
            	case 1 :
            	    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1308:2: rule__FileMapping__FilesAssignment_3
            	    {
            	    pushFollow(FollowSets000.FOLLOW_rule__FileMapping__FilesAssignment_3_in_rule__FileMapping__Group__3__Impl2622);
            	    rule__FileMapping__FilesAssignment_3();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop11;
                }
            } while (true);

             after(grammarAccess.getFileMappingAccess().getFilesAssignment_3()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FileMapping__Group__3__Impl"


    // $ANTLR start "rule__PathExpression__Group__0"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1326:1: rule__PathExpression__Group__0 : rule__PathExpression__Group__0__Impl rule__PathExpression__Group__1 ;
    public final void rule__PathExpression__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1330:1: ( rule__PathExpression__Group__0__Impl rule__PathExpression__Group__1 )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1331:2: rule__PathExpression__Group__0__Impl rule__PathExpression__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_rule__PathExpression__Group__0__Impl_in_rule__PathExpression__Group__02661);
            rule__PathExpression__Group__0__Impl();

            state._fsp--;

            pushFollow(FollowSets000.FOLLOW_rule__PathExpression__Group__1_in_rule__PathExpression__Group__02664);
            rule__PathExpression__Group__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PathExpression__Group__0"


    // $ANTLR start "rule__PathExpression__Group__0__Impl"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1338:1: rule__PathExpression__Group__0__Impl : ( rulePath ) ;
    public final void rule__PathExpression__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1342:1: ( ( rulePath ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1343:1: ( rulePath )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1343:1: ( rulePath )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1344:1: rulePath
            {
             before(grammarAccess.getPathExpressionAccess().getPathParserRuleCall_0()); 
            pushFollow(FollowSets000.FOLLOW_rulePath_in_rule__PathExpression__Group__0__Impl2691);
            rulePath();

            state._fsp--;

             after(grammarAccess.getPathExpressionAccess().getPathParserRuleCall_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PathExpression__Group__0__Impl"


    // $ANTLR start "rule__PathExpression__Group__1"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1355:1: rule__PathExpression__Group__1 : rule__PathExpression__Group__1__Impl ;
    public final void rule__PathExpression__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1359:1: ( rule__PathExpression__Group__1__Impl )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1360:2: rule__PathExpression__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_rule__PathExpression__Group__1__Impl_in_rule__PathExpression__Group__12720);
            rule__PathExpression__Group__1__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PathExpression__Group__1"


    // $ANTLR start "rule__PathExpression__Group__1__Impl"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1366:1: rule__PathExpression__Group__1__Impl : ( ( rule__PathExpression__Group_1__0 )? ) ;
    public final void rule__PathExpression__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1370:1: ( ( ( rule__PathExpression__Group_1__0 )? ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1371:1: ( ( rule__PathExpression__Group_1__0 )? )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1371:1: ( ( rule__PathExpression__Group_1__0 )? )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1372:1: ( rule__PathExpression__Group_1__0 )?
            {
             before(grammarAccess.getPathExpressionAccess().getGroup_1()); 
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1373:1: ( rule__PathExpression__Group_1__0 )?
            int alt12=2;
            int LA12_0 = input.LA(1);

            if ( ((LA12_0>=11 && LA12_0<=13)) ) {
                alt12=1;
            }
            switch (alt12) {
                case 1 :
                    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1373:2: rule__PathExpression__Group_1__0
                    {
                    pushFollow(FollowSets000.FOLLOW_rule__PathExpression__Group_1__0_in_rule__PathExpression__Group__1__Impl2747);
                    rule__PathExpression__Group_1__0();

                    state._fsp--;


                    }
                    break;

            }

             after(grammarAccess.getPathExpressionAccess().getGroup_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PathExpression__Group__1__Impl"


    // $ANTLR start "rule__PathExpression__Group_1__0"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1387:1: rule__PathExpression__Group_1__0 : rule__PathExpression__Group_1__0__Impl rule__PathExpression__Group_1__1 ;
    public final void rule__PathExpression__Group_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1391:1: ( rule__PathExpression__Group_1__0__Impl rule__PathExpression__Group_1__1 )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1392:2: rule__PathExpression__Group_1__0__Impl rule__PathExpression__Group_1__1
            {
            pushFollow(FollowSets000.FOLLOW_rule__PathExpression__Group_1__0__Impl_in_rule__PathExpression__Group_1__02782);
            rule__PathExpression__Group_1__0__Impl();

            state._fsp--;

            pushFollow(FollowSets000.FOLLOW_rule__PathExpression__Group_1__1_in_rule__PathExpression__Group_1__02785);
            rule__PathExpression__Group_1__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PathExpression__Group_1__0"


    // $ANTLR start "rule__PathExpression__Group_1__0__Impl"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1399:1: rule__PathExpression__Group_1__0__Impl : ( () ) ;
    public final void rule__PathExpression__Group_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1403:1: ( ( () ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1404:1: ( () )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1404:1: ( () )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1405:1: ()
            {
             before(grammarAccess.getPathExpressionAccess().getPathExpressionPrefixAction_1_0()); 
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1406:1: ()
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1408:1: 
            {
            }

             after(grammarAccess.getPathExpressionAccess().getPathExpressionPrefixAction_1_0()); 

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PathExpression__Group_1__0__Impl"


    // $ANTLR start "rule__PathExpression__Group_1__1"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1418:1: rule__PathExpression__Group_1__1 : rule__PathExpression__Group_1__1__Impl rule__PathExpression__Group_1__2 ;
    public final void rule__PathExpression__Group_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1422:1: ( rule__PathExpression__Group_1__1__Impl rule__PathExpression__Group_1__2 )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1423:2: rule__PathExpression__Group_1__1__Impl rule__PathExpression__Group_1__2
            {
            pushFollow(FollowSets000.FOLLOW_rule__PathExpression__Group_1__1__Impl_in_rule__PathExpression__Group_1__12843);
            rule__PathExpression__Group_1__1__Impl();

            state._fsp--;

            pushFollow(FollowSets000.FOLLOW_rule__PathExpression__Group_1__2_in_rule__PathExpression__Group_1__12846);
            rule__PathExpression__Group_1__2();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PathExpression__Group_1__1"


    // $ANTLR start "rule__PathExpression__Group_1__1__Impl"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1430:1: rule__PathExpression__Group_1__1__Impl : ( ( rule__PathExpression__SpecialAssignment_1_1 ) ) ;
    public final void rule__PathExpression__Group_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1434:1: ( ( ( rule__PathExpression__SpecialAssignment_1_1 ) ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1435:1: ( ( rule__PathExpression__SpecialAssignment_1_1 ) )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1435:1: ( ( rule__PathExpression__SpecialAssignment_1_1 ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1436:1: ( rule__PathExpression__SpecialAssignment_1_1 )
            {
             before(grammarAccess.getPathExpressionAccess().getSpecialAssignment_1_1()); 
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1437:1: ( rule__PathExpression__SpecialAssignment_1_1 )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1437:2: rule__PathExpression__SpecialAssignment_1_1
            {
            pushFollow(FollowSets000.FOLLOW_rule__PathExpression__SpecialAssignment_1_1_in_rule__PathExpression__Group_1__1__Impl2873);
            rule__PathExpression__SpecialAssignment_1_1();

            state._fsp--;


            }

             after(grammarAccess.getPathExpressionAccess().getSpecialAssignment_1_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PathExpression__Group_1__1__Impl"


    // $ANTLR start "rule__PathExpression__Group_1__2"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1447:1: rule__PathExpression__Group_1__2 : rule__PathExpression__Group_1__2__Impl ;
    public final void rule__PathExpression__Group_1__2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1451:1: ( rule__PathExpression__Group_1__2__Impl )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1452:2: rule__PathExpression__Group_1__2__Impl
            {
            pushFollow(FollowSets000.FOLLOW_rule__PathExpression__Group_1__2__Impl_in_rule__PathExpression__Group_1__22903);
            rule__PathExpression__Group_1__2__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PathExpression__Group_1__2"


    // $ANTLR start "rule__PathExpression__Group_1__2__Impl"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1458:1: rule__PathExpression__Group_1__2__Impl : ( ( rule__PathExpression__SuffixAssignment_1_2 ) ) ;
    public final void rule__PathExpression__Group_1__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1462:1: ( ( ( rule__PathExpression__SuffixAssignment_1_2 ) ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1463:1: ( ( rule__PathExpression__SuffixAssignment_1_2 ) )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1463:1: ( ( rule__PathExpression__SuffixAssignment_1_2 ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1464:1: ( rule__PathExpression__SuffixAssignment_1_2 )
            {
             before(grammarAccess.getPathExpressionAccess().getSuffixAssignment_1_2()); 
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1465:1: ( rule__PathExpression__SuffixAssignment_1_2 )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1465:2: rule__PathExpression__SuffixAssignment_1_2
            {
            pushFollow(FollowSets000.FOLLOW_rule__PathExpression__SuffixAssignment_1_2_in_rule__PathExpression__Group_1__2__Impl2930);
            rule__PathExpression__SuffixAssignment_1_2();

            state._fsp--;


            }

             after(grammarAccess.getPathExpressionAccess().getSuffixAssignment_1_2()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PathExpression__Group_1__2__Impl"


    // $ANTLR start "rule__Module__Group__0"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1481:1: rule__Module__Group__0 : rule__Module__Group__0__Impl rule__Module__Group__1 ;
    public final void rule__Module__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1485:1: ( rule__Module__Group__0__Impl rule__Module__Group__1 )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1486:2: rule__Module__Group__0__Impl rule__Module__Group__1
            {
            pushFollow(FollowSets000.FOLLOW_rule__Module__Group__0__Impl_in_rule__Module__Group__02966);
            rule__Module__Group__0__Impl();

            state._fsp--;

            pushFollow(FollowSets000.FOLLOW_rule__Module__Group__1_in_rule__Module__Group__02969);
            rule__Module__Group__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Module__Group__0"


    // $ANTLR start "rule__Module__Group__0__Impl"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1493:1: rule__Module__Group__0__Impl : ( ( rule__Module__NameAssignment_0 ) ) ;
    public final void rule__Module__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1497:1: ( ( ( rule__Module__NameAssignment_0 ) ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1498:1: ( ( rule__Module__NameAssignment_0 ) )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1498:1: ( ( rule__Module__NameAssignment_0 ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1499:1: ( rule__Module__NameAssignment_0 )
            {
             before(grammarAccess.getModuleAccess().getNameAssignment_0()); 
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1500:1: ( rule__Module__NameAssignment_0 )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1500:2: rule__Module__NameAssignment_0
            {
            pushFollow(FollowSets000.FOLLOW_rule__Module__NameAssignment_0_in_rule__Module__Group__0__Impl2996);
            rule__Module__NameAssignment_0();

            state._fsp--;


            }

             after(grammarAccess.getModuleAccess().getNameAssignment_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Module__Group__0__Impl"


    // $ANTLR start "rule__Module__Group__1"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1510:1: rule__Module__Group__1 : rule__Module__Group__1__Impl ;
    public final void rule__Module__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1514:1: ( rule__Module__Group__1__Impl )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1515:2: rule__Module__Group__1__Impl
            {
            pushFollow(FollowSets000.FOLLOW_rule__Module__Group__1__Impl_in_rule__Module__Group__13026);
            rule__Module__Group__1__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Module__Group__1"


    // $ANTLR start "rule__Module__Group__1__Impl"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1521:1: rule__Module__Group__1__Impl : ( ( rule__Module__Group_1__0 )? ) ;
    public final void rule__Module__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1525:1: ( ( ( rule__Module__Group_1__0 )? ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1526:1: ( ( rule__Module__Group_1__0 )? )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1526:1: ( ( rule__Module__Group_1__0 )? )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1527:1: ( rule__Module__Group_1__0 )?
            {
             before(grammarAccess.getModuleAccess().getGroup_1()); 
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1528:1: ( rule__Module__Group_1__0 )?
            int alt13=2;
            int LA13_0 = input.LA(1);

            if ( (LA13_0==23) ) {
                alt13=1;
            }
            switch (alt13) {
                case 1 :
                    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1528:2: rule__Module__Group_1__0
                    {
                    pushFollow(FollowSets000.FOLLOW_rule__Module__Group_1__0_in_rule__Module__Group__1__Impl3053);
                    rule__Module__Group_1__0();

                    state._fsp--;


                    }
                    break;

            }

             after(grammarAccess.getModuleAccess().getGroup_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Module__Group__1__Impl"


    // $ANTLR start "rule__Module__Group_1__0"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1542:1: rule__Module__Group_1__0 : rule__Module__Group_1__0__Impl rule__Module__Group_1__1 ;
    public final void rule__Module__Group_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1546:1: ( rule__Module__Group_1__0__Impl rule__Module__Group_1__1 )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1547:2: rule__Module__Group_1__0__Impl rule__Module__Group_1__1
            {
            pushFollow(FollowSets000.FOLLOW_rule__Module__Group_1__0__Impl_in_rule__Module__Group_1__03088);
            rule__Module__Group_1__0__Impl();

            state._fsp--;

            pushFollow(FollowSets000.FOLLOW_rule__Module__Group_1__1_in_rule__Module__Group_1__03091);
            rule__Module__Group_1__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Module__Group_1__0"


    // $ANTLR start "rule__Module__Group_1__0__Impl"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1554:1: rule__Module__Group_1__0__Impl : ( '[' ) ;
    public final void rule__Module__Group_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1558:1: ( ( '[' ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1559:1: ( '[' )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1559:1: ( '[' )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1560:1: '['
            {
             before(grammarAccess.getModuleAccess().getLeftSquareBracketKeyword_1_0()); 
            match(input,23,FollowSets000.FOLLOW_23_in_rule__Module__Group_1__0__Impl3119); 
             after(grammarAccess.getModuleAccess().getLeftSquareBracketKeyword_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Module__Group_1__0__Impl"


    // $ANTLR start "rule__Module__Group_1__1"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1573:1: rule__Module__Group_1__1 : rule__Module__Group_1__1__Impl rule__Module__Group_1__2 ;
    public final void rule__Module__Group_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1577:1: ( rule__Module__Group_1__1__Impl rule__Module__Group_1__2 )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1578:2: rule__Module__Group_1__1__Impl rule__Module__Group_1__2
            {
            pushFollow(FollowSets000.FOLLOW_rule__Module__Group_1__1__Impl_in_rule__Module__Group_1__13150);
            rule__Module__Group_1__1__Impl();

            state._fsp--;

            pushFollow(FollowSets000.FOLLOW_rule__Module__Group_1__2_in_rule__Module__Group_1__13153);
            rule__Module__Group_1__2();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Module__Group_1__1"


    // $ANTLR start "rule__Module__Group_1__1__Impl"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1585:1: rule__Module__Group_1__1__Impl : ( ( rule__Module__FilesAssignment_1_1 ) ) ;
    public final void rule__Module__Group_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1589:1: ( ( ( rule__Module__FilesAssignment_1_1 ) ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1590:1: ( ( rule__Module__FilesAssignment_1_1 ) )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1590:1: ( ( rule__Module__FilesAssignment_1_1 ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1591:1: ( rule__Module__FilesAssignment_1_1 )
            {
             before(grammarAccess.getModuleAccess().getFilesAssignment_1_1()); 
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1592:1: ( rule__Module__FilesAssignment_1_1 )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1592:2: rule__Module__FilesAssignment_1_1
            {
            pushFollow(FollowSets000.FOLLOW_rule__Module__FilesAssignment_1_1_in_rule__Module__Group_1__1__Impl3180);
            rule__Module__FilesAssignment_1_1();

            state._fsp--;


            }

             after(grammarAccess.getModuleAccess().getFilesAssignment_1_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Module__Group_1__1__Impl"


    // $ANTLR start "rule__Module__Group_1__2"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1602:1: rule__Module__Group_1__2 : rule__Module__Group_1__2__Impl rule__Module__Group_1__3 ;
    public final void rule__Module__Group_1__2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1606:1: ( rule__Module__Group_1__2__Impl rule__Module__Group_1__3 )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1607:2: rule__Module__Group_1__2__Impl rule__Module__Group_1__3
            {
            pushFollow(FollowSets000.FOLLOW_rule__Module__Group_1__2__Impl_in_rule__Module__Group_1__23210);
            rule__Module__Group_1__2__Impl();

            state._fsp--;

            pushFollow(FollowSets000.FOLLOW_rule__Module__Group_1__3_in_rule__Module__Group_1__23213);
            rule__Module__Group_1__3();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Module__Group_1__2"


    // $ANTLR start "rule__Module__Group_1__2__Impl"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1614:1: rule__Module__Group_1__2__Impl : ( ( rule__Module__FilesAssignment_1_2 )* ) ;
    public final void rule__Module__Group_1__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1618:1: ( ( ( rule__Module__FilesAssignment_1_2 )* ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1619:1: ( ( rule__Module__FilesAssignment_1_2 )* )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1619:1: ( ( rule__Module__FilesAssignment_1_2 )* )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1620:1: ( rule__Module__FilesAssignment_1_2 )*
            {
             before(grammarAccess.getModuleAccess().getFilesAssignment_1_2()); 
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1621:1: ( rule__Module__FilesAssignment_1_2 )*
            loop14:
            do {
                int alt14=2;
                int LA14_0 = input.LA(1);

                if ( (LA14_0==RULE_ID) ) {
                    alt14=1;
                }


                switch (alt14) {
            	case 1 :
            	    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1621:2: rule__Module__FilesAssignment_1_2
            	    {
            	    pushFollow(FollowSets000.FOLLOW_rule__Module__FilesAssignment_1_2_in_rule__Module__Group_1__2__Impl3240);
            	    rule__Module__FilesAssignment_1_2();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop14;
                }
            } while (true);

             after(grammarAccess.getModuleAccess().getFilesAssignment_1_2()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Module__Group_1__2__Impl"


    // $ANTLR start "rule__Module__Group_1__3"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1631:1: rule__Module__Group_1__3 : rule__Module__Group_1__3__Impl ;
    public final void rule__Module__Group_1__3() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1635:1: ( rule__Module__Group_1__3__Impl )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1636:2: rule__Module__Group_1__3__Impl
            {
            pushFollow(FollowSets000.FOLLOW_rule__Module__Group_1__3__Impl_in_rule__Module__Group_1__33271);
            rule__Module__Group_1__3__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Module__Group_1__3"


    // $ANTLR start "rule__Module__Group_1__3__Impl"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1642:1: rule__Module__Group_1__3__Impl : ( ']' ) ;
    public final void rule__Module__Group_1__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1646:1: ( ( ']' ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1647:1: ( ']' )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1647:1: ( ']' )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1648:1: ']'
            {
             before(grammarAccess.getModuleAccess().getRightSquareBracketKeyword_1_3()); 
            match(input,24,FollowSets000.FOLLOW_24_in_rule__Module__Group_1__3__Impl3299); 
             after(grammarAccess.getModuleAccess().getRightSquareBracketKeyword_1_3()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Module__Group_1__3__Impl"


    // $ANTLR start "rule__ModelRoot__NameAssignment_1"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1670:1: rule__ModelRoot__NameAssignment_1 : ( RULE_ID ) ;
    public final void rule__ModelRoot__NameAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1674:1: ( ( RULE_ID ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1675:1: ( RULE_ID )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1675:1: ( RULE_ID )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1676:1: RULE_ID
            {
             before(grammarAccess.getModelRootAccess().getNameIDTerminalRuleCall_1_0()); 
            match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_rule__ModelRoot__NameAssignment_13343); 
             after(grammarAccess.getModelRootAccess().getNameIDTerminalRuleCall_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ModelRoot__NameAssignment_1"


    // $ANTLR start "rule__ModelRoot__ModulesAssignment_2_1"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1685:1: rule__ModelRoot__ModulesAssignment_2_1 : ( ruleModule ) ;
    public final void rule__ModelRoot__ModulesAssignment_2_1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1689:1: ( ( ruleModule ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1690:1: ( ruleModule )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1690:1: ( ruleModule )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1691:1: ruleModule
            {
             before(grammarAccess.getModelRootAccess().getModulesModuleParserRuleCall_2_1_0()); 
            pushFollow(FollowSets000.FOLLOW_ruleModule_in_rule__ModelRoot__ModulesAssignment_2_13374);
            ruleModule();

            state._fsp--;

             after(grammarAccess.getModelRootAccess().getModulesModuleParserRuleCall_2_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ModelRoot__ModulesAssignment_2_1"


    // $ANTLR start "rule__ModelRoot__ModulesAssignment_2_2"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1700:1: rule__ModelRoot__ModulesAssignment_2_2 : ( ruleModule ) ;
    public final void rule__ModelRoot__ModulesAssignment_2_2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1704:1: ( ( ruleModule ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1705:1: ( ruleModule )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1705:1: ( ruleModule )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1706:1: ruleModule
            {
             before(grammarAccess.getModelRootAccess().getModulesModuleParserRuleCall_2_2_0()); 
            pushFollow(FollowSets000.FOLLOW_ruleModule_in_rule__ModelRoot__ModulesAssignment_2_23405);
            ruleModule();

            state._fsp--;

             after(grammarAccess.getModelRootAccess().getModulesModuleParserRuleCall_2_2_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ModelRoot__ModulesAssignment_2_2"


    // $ANTLR start "rule__ModelRoot__MappingsAssignment_3"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1715:1: rule__ModelRoot__MappingsAssignment_3 : ( ruleMapping ) ;
    public final void rule__ModelRoot__MappingsAssignment_3() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1719:1: ( ( ruleMapping ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1720:1: ( ruleMapping )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1720:1: ( ruleMapping )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1721:1: ruleMapping
            {
             before(grammarAccess.getModelRootAccess().getMappingsMappingParserRuleCall_3_0()); 
            pushFollow(FollowSets000.FOLLOW_ruleMapping_in_rule__ModelRoot__MappingsAssignment_33436);
            ruleMapping();

            state._fsp--;

             after(grammarAccess.getModelRootAccess().getMappingsMappingParserRuleCall_3_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ModelRoot__MappingsAssignment_3"


    // $ANTLR start "rule__ModelRoot__MappingsAssignment_4"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1730:1: rule__ModelRoot__MappingsAssignment_4 : ( ruleMapping ) ;
    public final void rule__ModelRoot__MappingsAssignment_4() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1734:1: ( ( ruleMapping ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1735:1: ( ruleMapping )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1735:1: ( ruleMapping )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1736:1: ruleMapping
            {
             before(grammarAccess.getModelRootAccess().getMappingsMappingParserRuleCall_4_0()); 
            pushFollow(FollowSets000.FOLLOW_ruleMapping_in_rule__ModelRoot__MappingsAssignment_43467);
            ruleMapping();

            state._fsp--;

             after(grammarAccess.getModelRootAccess().getMappingsMappingParserRuleCall_4_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ModelRoot__MappingsAssignment_4"


    // $ANTLR start "rule__BinaryFeatureExpression__OperatorAssignment_1_1"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1745:1: rule__BinaryFeatureExpression__OperatorAssignment_1_1 : ( ruleOperatorsEnum ) ;
    public final void rule__BinaryFeatureExpression__OperatorAssignment_1_1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1749:1: ( ( ruleOperatorsEnum ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1750:1: ( ruleOperatorsEnum )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1750:1: ( ruleOperatorsEnum )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1751:1: ruleOperatorsEnum
            {
             before(grammarAccess.getBinaryFeatureExpressionAccess().getOperatorOperatorsEnumEnumRuleCall_1_1_0()); 
            pushFollow(FollowSets000.FOLLOW_ruleOperatorsEnum_in_rule__BinaryFeatureExpression__OperatorAssignment_1_13498);
            ruleOperatorsEnum();

            state._fsp--;

             after(grammarAccess.getBinaryFeatureExpressionAccess().getOperatorOperatorsEnumEnumRuleCall_1_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__BinaryFeatureExpression__OperatorAssignment_1_1"


    // $ANTLR start "rule__BinaryFeatureExpression__RightAssignment_1_2"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1760:1: rule__BinaryFeatureExpression__RightAssignment_1_2 : ( ruleBinaryFeatureExpression ) ;
    public final void rule__BinaryFeatureExpression__RightAssignment_1_2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1764:1: ( ( ruleBinaryFeatureExpression ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1765:1: ( ruleBinaryFeatureExpression )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1765:1: ( ruleBinaryFeatureExpression )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1766:1: ruleBinaryFeatureExpression
            {
             before(grammarAccess.getBinaryFeatureExpressionAccess().getRightBinaryFeatureExpressionParserRuleCall_1_2_0()); 
            pushFollow(FollowSets000.FOLLOW_ruleBinaryFeatureExpression_in_rule__BinaryFeatureExpression__RightAssignment_1_23529);
            ruleBinaryFeatureExpression();

            state._fsp--;

             after(grammarAccess.getBinaryFeatureExpressionAccess().getRightBinaryFeatureExpressionParserRuleCall_1_2_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__BinaryFeatureExpression__RightAssignment_1_2"


    // $ANTLR start "rule__UnaryFeatureExpression__OperatorAssignment_0"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1775:1: rule__UnaryFeatureExpression__OperatorAssignment_0 : ( ruleOperatorsEnum ) ;
    public final void rule__UnaryFeatureExpression__OperatorAssignment_0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1779:1: ( ( ruleOperatorsEnum ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1780:1: ( ruleOperatorsEnum )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1780:1: ( ruleOperatorsEnum )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1781:1: ruleOperatorsEnum
            {
             before(grammarAccess.getUnaryFeatureExpressionAccess().getOperatorOperatorsEnumEnumRuleCall_0_0()); 
            pushFollow(FollowSets000.FOLLOW_ruleOperatorsEnum_in_rule__UnaryFeatureExpression__OperatorAssignment_03560);
            ruleOperatorsEnum();

            state._fsp--;

             after(grammarAccess.getUnaryFeatureExpressionAccess().getOperatorOperatorsEnumEnumRuleCall_0_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnaryFeatureExpression__OperatorAssignment_0"


    // $ANTLR start "rule__UnaryFeatureExpression__ExprAssignment_1"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1790:1: rule__UnaryFeatureExpression__ExprAssignment_1 : ( ruleFeature ) ;
    public final void rule__UnaryFeatureExpression__ExprAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1794:1: ( ( ruleFeature ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1795:1: ( ruleFeature )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1795:1: ( ruleFeature )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1796:1: ruleFeature
            {
             before(grammarAccess.getUnaryFeatureExpressionAccess().getExprFeatureParserRuleCall_1_0()); 
            pushFollow(FollowSets000.FOLLOW_ruleFeature_in_rule__UnaryFeatureExpression__ExprAssignment_13591);
            ruleFeature();

            state._fsp--;

             after(grammarAccess.getUnaryFeatureExpressionAccess().getExprFeatureParserRuleCall_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__UnaryFeatureExpression__ExprAssignment_1"


    // $ANTLR start "rule__Mapping__ExprAssignment_0"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1805:1: rule__Mapping__ExprAssignment_0 : ( ruleFeatureExpression ) ;
    public final void rule__Mapping__ExprAssignment_0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1809:1: ( ( ruleFeatureExpression ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1810:1: ( ruleFeatureExpression )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1810:1: ( ruleFeatureExpression )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1811:1: ruleFeatureExpression
            {
             before(grammarAccess.getMappingAccess().getExprFeatureExpressionParserRuleCall_0_0()); 
            pushFollow(FollowSets000.FOLLOW_ruleFeatureExpression_in_rule__Mapping__ExprAssignment_03622);
            ruleFeatureExpression();

            state._fsp--;

             after(grammarAccess.getMappingAccess().getExprFeatureExpressionParserRuleCall_0_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Mapping__ExprAssignment_0"


    // $ANTLR start "rule__Mapping__MappingAssignment_2_0"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1820:1: rule__Mapping__MappingAssignment_2_0 : ( ruleFileMapping ) ;
    public final void rule__Mapping__MappingAssignment_2_0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1824:1: ( ( ruleFileMapping ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1825:1: ( ruleFileMapping )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1825:1: ( ruleFileMapping )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1826:1: ruleFileMapping
            {
             before(grammarAccess.getMappingAccess().getMappingFileMappingParserRuleCall_2_0_0()); 
            pushFollow(FollowSets000.FOLLOW_ruleFileMapping_in_rule__Mapping__MappingAssignment_2_03653);
            ruleFileMapping();

            state._fsp--;

             after(grammarAccess.getMappingAccess().getMappingFileMappingParserRuleCall_2_0_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Mapping__MappingAssignment_2_0"


    // $ANTLR start "rule__Mapping__MappingAssignment_2_1"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1835:1: rule__Mapping__MappingAssignment_2_1 : ( ruleFileMapping ) ;
    public final void rule__Mapping__MappingAssignment_2_1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1839:1: ( ( ruleFileMapping ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1840:1: ( ruleFileMapping )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1840:1: ( ruleFileMapping )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1841:1: ruleFileMapping
            {
             before(grammarAccess.getMappingAccess().getMappingFileMappingParserRuleCall_2_1_0()); 
            pushFollow(FollowSets000.FOLLOW_ruleFileMapping_in_rule__Mapping__MappingAssignment_2_13684);
            ruleFileMapping();

            state._fsp--;

             after(grammarAccess.getMappingAccess().getMappingFileMappingParserRuleCall_2_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Mapping__MappingAssignment_2_1"


    // $ANTLR start "rule__FileMapping__ModuleAssignment_0"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1850:1: rule__FileMapping__ModuleAssignment_0 : ( ( ruleEString ) ) ;
    public final void rule__FileMapping__ModuleAssignment_0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1854:1: ( ( ( ruleEString ) ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1855:1: ( ( ruleEString ) )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1855:1: ( ( ruleEString ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1856:1: ( ruleEString )
            {
             before(grammarAccess.getFileMappingAccess().getModuleModuleCrossReference_0_0()); 
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1857:1: ( ruleEString )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1858:1: ruleEString
            {
             before(grammarAccess.getFileMappingAccess().getModuleModuleEStringParserRuleCall_0_0_1()); 
            pushFollow(FollowSets000.FOLLOW_ruleEString_in_rule__FileMapping__ModuleAssignment_03719);
            ruleEString();

            state._fsp--;

             after(grammarAccess.getFileMappingAccess().getModuleModuleEStringParserRuleCall_0_0_1()); 

            }

             after(grammarAccess.getFileMappingAccess().getModuleModuleCrossReference_0_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FileMapping__ModuleAssignment_0"


    // $ANTLR start "rule__FileMapping__FilesAssignment_2"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1869:1: rule__FileMapping__FilesAssignment_2 : ( rulePathExpression ) ;
    public final void rule__FileMapping__FilesAssignment_2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1873:1: ( ( rulePathExpression ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1874:1: ( rulePathExpression )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1874:1: ( rulePathExpression )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1875:1: rulePathExpression
            {
             before(grammarAccess.getFileMappingAccess().getFilesPathExpressionParserRuleCall_2_0()); 
            pushFollow(FollowSets000.FOLLOW_rulePathExpression_in_rule__FileMapping__FilesAssignment_23754);
            rulePathExpression();

            state._fsp--;

             after(grammarAccess.getFileMappingAccess().getFilesPathExpressionParserRuleCall_2_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FileMapping__FilesAssignment_2"


    // $ANTLR start "rule__FileMapping__FilesAssignment_3"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1884:1: rule__FileMapping__FilesAssignment_3 : ( rulePathExpression ) ;
    public final void rule__FileMapping__FilesAssignment_3() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1888:1: ( ( rulePathExpression ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1889:1: ( rulePathExpression )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1889:1: ( rulePathExpression )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1890:1: rulePathExpression
            {
             before(grammarAccess.getFileMappingAccess().getFilesPathExpressionParserRuleCall_3_0()); 
            pushFollow(FollowSets000.FOLLOW_rulePathExpression_in_rule__FileMapping__FilesAssignment_33785);
            rulePathExpression();

            state._fsp--;

             after(grammarAccess.getFileMappingAccess().getFilesPathExpressionParserRuleCall_3_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__FileMapping__FilesAssignment_3"


    // $ANTLR start "rule__PathExpression__SpecialAssignment_1_1"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1899:1: rule__PathExpression__SpecialAssignment_1_1 : ( rulePathEnum ) ;
    public final void rule__PathExpression__SpecialAssignment_1_1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1903:1: ( ( rulePathEnum ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1904:1: ( rulePathEnum )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1904:1: ( rulePathEnum )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1905:1: rulePathEnum
            {
             before(grammarAccess.getPathExpressionAccess().getSpecialPathEnumEnumRuleCall_1_1_0()); 
            pushFollow(FollowSets000.FOLLOW_rulePathEnum_in_rule__PathExpression__SpecialAssignment_1_13816);
            rulePathEnum();

            state._fsp--;

             after(grammarAccess.getPathExpressionAccess().getSpecialPathEnumEnumRuleCall_1_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PathExpression__SpecialAssignment_1_1"


    // $ANTLR start "rule__PathExpression__SuffixAssignment_1_2"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1914:1: rule__PathExpression__SuffixAssignment_1_2 : ( rulePathExpression ) ;
    public final void rule__PathExpression__SuffixAssignment_1_2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1918:1: ( ( rulePathExpression ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1919:1: ( rulePathExpression )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1919:1: ( rulePathExpression )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1920:1: rulePathExpression
            {
             before(grammarAccess.getPathExpressionAccess().getSuffixPathExpressionParserRuleCall_1_2_0()); 
            pushFollow(FollowSets000.FOLLOW_rulePathExpression_in_rule__PathExpression__SuffixAssignment_1_23847);
            rulePathExpression();

            state._fsp--;

             after(grammarAccess.getPathExpressionAccess().getSuffixPathExpressionParserRuleCall_1_2_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PathExpression__SuffixAssignment_1_2"


    // $ANTLR start "rule__Path__NameAssignment"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1929:1: rule__Path__NameAssignment : ( RULE_ID ) ;
    public final void rule__Path__NameAssignment() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1933:1: ( ( RULE_ID ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1934:1: ( RULE_ID )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1934:1: ( RULE_ID )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1935:1: RULE_ID
            {
             before(grammarAccess.getPathAccess().getNameIDTerminalRuleCall_0()); 
            match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_rule__Path__NameAssignment3878); 
             after(grammarAccess.getPathAccess().getNameIDTerminalRuleCall_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Path__NameAssignment"


    // $ANTLR start "rule__Module__NameAssignment_0"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1944:1: rule__Module__NameAssignment_0 : ( RULE_ID ) ;
    public final void rule__Module__NameAssignment_0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1948:1: ( ( RULE_ID ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1949:1: ( RULE_ID )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1949:1: ( RULE_ID )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1950:1: RULE_ID
            {
             before(grammarAccess.getModuleAccess().getNameIDTerminalRuleCall_0_0()); 
            match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_rule__Module__NameAssignment_03909); 
             after(grammarAccess.getModuleAccess().getNameIDTerminalRuleCall_0_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Module__NameAssignment_0"


    // $ANTLR start "rule__Module__FilesAssignment_1_1"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1959:1: rule__Module__FilesAssignment_1_1 : ( rulePathExpression ) ;
    public final void rule__Module__FilesAssignment_1_1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1963:1: ( ( rulePathExpression ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1964:1: ( rulePathExpression )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1964:1: ( rulePathExpression )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1965:1: rulePathExpression
            {
             before(grammarAccess.getModuleAccess().getFilesPathExpressionParserRuleCall_1_1_0()); 
            pushFollow(FollowSets000.FOLLOW_rulePathExpression_in_rule__Module__FilesAssignment_1_13940);
            rulePathExpression();

            state._fsp--;

             after(grammarAccess.getModuleAccess().getFilesPathExpressionParserRuleCall_1_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Module__FilesAssignment_1_1"


    // $ANTLR start "rule__Module__FilesAssignment_1_2"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1974:1: rule__Module__FilesAssignment_1_2 : ( rulePathExpression ) ;
    public final void rule__Module__FilesAssignment_1_2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1978:1: ( ( rulePathExpression ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1979:1: ( rulePathExpression )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1979:1: ( rulePathExpression )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1980:1: rulePathExpression
            {
             before(grammarAccess.getModuleAccess().getFilesPathExpressionParserRuleCall_1_2_0()); 
            pushFollow(FollowSets000.FOLLOW_rulePathExpression_in_rule__Module__FilesAssignment_1_23971);
            rulePathExpression();

            state._fsp--;

             after(grammarAccess.getModuleAccess().getFilesPathExpressionParserRuleCall_1_2_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Module__FilesAssignment_1_2"


    // $ANTLR start "rule__Feature__NameAssignment"
    // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1989:1: rule__Feature__NameAssignment : ( RULE_ID ) ;
    public final void rule__Feature__NameAssignment() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1993:1: ( ( RULE_ID ) )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1994:1: ( RULE_ID )
            {
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1994:1: ( RULE_ID )
            // ../dk.itu.smdp.ftc.ui/src-gen/dk/itu/smdp/ftc/ui/contentassist/antlr/internal/InternalFTC.g:1995:1: RULE_ID
            {
             before(grammarAccess.getFeatureAccess().getNameIDTerminalRuleCall_0()); 
            match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_rule__Feature__NameAssignment4002); 
             after(grammarAccess.getFeatureAccess().getNameIDTerminalRuleCall_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Feature__NameAssignment"

    // Delegated rules


 

    
    private static class FollowSets000 {
        public static final BitSet FOLLOW_ruleModelRoot_in_entryRuleModelRoot61 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleModelRoot68 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__ModelRoot__Group__0_in_ruleModelRoot94 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleFeatureExpression_in_entryRuleFeatureExpression121 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleFeatureExpression128 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleBinaryFeatureExpression_in_ruleFeatureExpression154 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleBinaryFeatureExpression_in_entryRuleBinaryFeatureExpression180 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleBinaryFeatureExpression187 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__BinaryFeatureExpression__Group__0_in_ruleBinaryFeatureExpression213 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleUnaryFeatureExpression_in_entryRuleUnaryFeatureExpression240 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleUnaryFeatureExpression247 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__UnaryFeatureExpression__Group__0_in_ruleUnaryFeatureExpression273 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleMapping_in_entryRuleMapping300 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleMapping307 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__Mapping__Group__0_in_ruleMapping333 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleFileMapping_in_entryRuleFileMapping360 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleFileMapping367 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__FileMapping__Group__0_in_ruleFileMapping393 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rulePathExpression_in_entryRulePathExpression420 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRulePathExpression427 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__PathExpression__Group__0_in_rulePathExpression453 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rulePath_in_entryRulePath480 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRulePath487 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__Path__NameAssignment_in_rulePath513 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleModule_in_entryRuleModule540 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleModule547 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__Module__Group__0_in_ruleModule573 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleFeature_in_entryRuleFeature600 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleFeature607 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__Feature__NameAssignment_in_ruleFeature633 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleEString_in_entryRuleEString660 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleEString667 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__EString__Alternatives_in_ruleEString693 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__PathEnum__Alternatives_in_rulePathEnum730 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__OperatorsEnum__Alternatives_in_ruleOperatorsEnum766 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleUnaryFeatureExpression_in_rule__BinaryFeatureExpression__Alternatives_0801 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleFeature_in_rule__BinaryFeatureExpression__Alternatives_0818 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_RULE_STRING_in_rule__EString__Alternatives850 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_RULE_ID_in_rule__EString__Alternatives867 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_11_in_rule__PathEnum__Alternatives900 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_12_in_rule__PathEnum__Alternatives921 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_13_in_rule__PathEnum__Alternatives942 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_14_in_rule__OperatorsEnum__Alternatives978 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_15_in_rule__OperatorsEnum__Alternatives999 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_16_in_rule__OperatorsEnum__Alternatives1020 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__ModelRoot__Group__0__Impl_in_rule__ModelRoot__Group__01053 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_rule__ModelRoot__Group__1_in_rule__ModelRoot__Group__01056 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_17_in_rule__ModelRoot__Group__0__Impl1084 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__ModelRoot__Group__1__Impl_in_rule__ModelRoot__Group__11115 = new BitSet(new long[]{0x000000000005C020L});
        public static final BitSet FOLLOW_rule__ModelRoot__Group__2_in_rule__ModelRoot__Group__11118 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__ModelRoot__NameAssignment_1_in_rule__ModelRoot__Group__1__Impl1145 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__ModelRoot__Group__2__Impl_in_rule__ModelRoot__Group__21175 = new BitSet(new long[]{0x000000000005C020L});
        public static final BitSet FOLLOW_rule__ModelRoot__Group__3_in_rule__ModelRoot__Group__21178 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__ModelRoot__Group_2__0_in_rule__ModelRoot__Group__2__Impl1205 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__ModelRoot__Group__3__Impl_in_rule__ModelRoot__Group__31236 = new BitSet(new long[]{0x000000000005C020L});
        public static final BitSet FOLLOW_rule__ModelRoot__Group__4_in_rule__ModelRoot__Group__31239 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__ModelRoot__MappingsAssignment_3_in_rule__ModelRoot__Group__3__Impl1266 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__ModelRoot__Group__4__Impl_in_rule__ModelRoot__Group__41296 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__ModelRoot__MappingsAssignment_4_in_rule__ModelRoot__Group__4__Impl1323 = new BitSet(new long[]{0x000000000005C022L});
        public static final BitSet FOLLOW_rule__ModelRoot__Group_2__0__Impl_in_rule__ModelRoot__Group_2__01364 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_rule__ModelRoot__Group_2__1_in_rule__ModelRoot__Group_2__01367 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_18_in_rule__ModelRoot__Group_2__0__Impl1395 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__ModelRoot__Group_2__1__Impl_in_rule__ModelRoot__Group_2__11426 = new BitSet(new long[]{0x0000000000080020L});
        public static final BitSet FOLLOW_rule__ModelRoot__Group_2__2_in_rule__ModelRoot__Group_2__11429 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__ModelRoot__ModulesAssignment_2_1_in_rule__ModelRoot__Group_2__1__Impl1456 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__ModelRoot__Group_2__2__Impl_in_rule__ModelRoot__Group_2__21486 = new BitSet(new long[]{0x0000000000080020L});
        public static final BitSet FOLLOW_rule__ModelRoot__Group_2__3_in_rule__ModelRoot__Group_2__21489 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__ModelRoot__ModulesAssignment_2_2_in_rule__ModelRoot__Group_2__2__Impl1516 = new BitSet(new long[]{0x0000000000000022L});
        public static final BitSet FOLLOW_rule__ModelRoot__Group_2__3__Impl_in_rule__ModelRoot__Group_2__31547 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_19_in_rule__ModelRoot__Group_2__3__Impl1575 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__BinaryFeatureExpression__Group__0__Impl_in_rule__BinaryFeatureExpression__Group__01614 = new BitSet(new long[]{0x000000000001C000L});
        public static final BitSet FOLLOW_rule__BinaryFeatureExpression__Group__1_in_rule__BinaryFeatureExpression__Group__01617 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__BinaryFeatureExpression__Alternatives_0_in_rule__BinaryFeatureExpression__Group__0__Impl1644 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__BinaryFeatureExpression__Group__1__Impl_in_rule__BinaryFeatureExpression__Group__11674 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__BinaryFeatureExpression__Group_1__0_in_rule__BinaryFeatureExpression__Group__1__Impl1701 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__BinaryFeatureExpression__Group_1__0__Impl_in_rule__BinaryFeatureExpression__Group_1__01736 = new BitSet(new long[]{0x000000000001C000L});
        public static final BitSet FOLLOW_rule__BinaryFeatureExpression__Group_1__1_in_rule__BinaryFeatureExpression__Group_1__01739 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__BinaryFeatureExpression__Group_1__1__Impl_in_rule__BinaryFeatureExpression__Group_1__11797 = new BitSet(new long[]{0x000000000005C020L});
        public static final BitSet FOLLOW_rule__BinaryFeatureExpression__Group_1__2_in_rule__BinaryFeatureExpression__Group_1__11800 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__BinaryFeatureExpression__OperatorAssignment_1_1_in_rule__BinaryFeatureExpression__Group_1__1__Impl1827 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__BinaryFeatureExpression__Group_1__2__Impl_in_rule__BinaryFeatureExpression__Group_1__21857 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__BinaryFeatureExpression__RightAssignment_1_2_in_rule__BinaryFeatureExpression__Group_1__2__Impl1884 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__UnaryFeatureExpression__Group__0__Impl_in_rule__UnaryFeatureExpression__Group__01920 = new BitSet(new long[]{0x000000000005C020L});
        public static final BitSet FOLLOW_rule__UnaryFeatureExpression__Group__1_in_rule__UnaryFeatureExpression__Group__01923 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__UnaryFeatureExpression__OperatorAssignment_0_in_rule__UnaryFeatureExpression__Group__0__Impl1950 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__UnaryFeatureExpression__Group__1__Impl_in_rule__UnaryFeatureExpression__Group__11980 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__UnaryFeatureExpression__ExprAssignment_1_in_rule__UnaryFeatureExpression__Group__1__Impl2007 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__Mapping__Group__0__Impl_in_rule__Mapping__Group__02041 = new BitSet(new long[]{0x0000000000100000L});
        public static final BitSet FOLLOW_rule__Mapping__Group__1_in_rule__Mapping__Group__02044 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__Mapping__ExprAssignment_0_in_rule__Mapping__Group__0__Impl2071 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__Mapping__Group__1__Impl_in_rule__Mapping__Group__12101 = new BitSet(new long[]{0x0000000000200030L});
        public static final BitSet FOLLOW_rule__Mapping__Group__2_in_rule__Mapping__Group__12104 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_20_in_rule__Mapping__Group__1__Impl2132 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__Mapping__Group__2__Impl_in_rule__Mapping__Group__22163 = new BitSet(new long[]{0x0000000000200030L});
        public static final BitSet FOLLOW_rule__Mapping__Group__3_in_rule__Mapping__Group__22166 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__Mapping__Group_2__0_in_rule__Mapping__Group__2__Impl2193 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__Mapping__Group__3__Impl_in_rule__Mapping__Group__32224 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_21_in_rule__Mapping__Group__3__Impl2252 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__Mapping__Group_2__0__Impl_in_rule__Mapping__Group_2__02291 = new BitSet(new long[]{0x0000000000000030L});
        public static final BitSet FOLLOW_rule__Mapping__Group_2__1_in_rule__Mapping__Group_2__02294 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__Mapping__MappingAssignment_2_0_in_rule__Mapping__Group_2__0__Impl2321 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__Mapping__Group_2__1__Impl_in_rule__Mapping__Group_2__12351 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__Mapping__MappingAssignment_2_1_in_rule__Mapping__Group_2__1__Impl2378 = new BitSet(new long[]{0x0000000000000032L});
        public static final BitSet FOLLOW_rule__FileMapping__Group__0__Impl_in_rule__FileMapping__Group__02413 = new BitSet(new long[]{0x0000000000400000L});
        public static final BitSet FOLLOW_rule__FileMapping__Group__1_in_rule__FileMapping__Group__02416 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__FileMapping__ModuleAssignment_0_in_rule__FileMapping__Group__0__Impl2443 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__FileMapping__Group__1__Impl_in_rule__FileMapping__Group__12473 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_rule__FileMapping__Group__2_in_rule__FileMapping__Group__12476 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_22_in_rule__FileMapping__Group__1__Impl2504 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__FileMapping__Group__2__Impl_in_rule__FileMapping__Group__22535 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_rule__FileMapping__Group__3_in_rule__FileMapping__Group__22538 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__FileMapping__FilesAssignment_2_in_rule__FileMapping__Group__2__Impl2565 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__FileMapping__Group__3__Impl_in_rule__FileMapping__Group__32595 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__FileMapping__FilesAssignment_3_in_rule__FileMapping__Group__3__Impl2622 = new BitSet(new long[]{0x0000000000000022L});
        public static final BitSet FOLLOW_rule__PathExpression__Group__0__Impl_in_rule__PathExpression__Group__02661 = new BitSet(new long[]{0x0000000000003800L});
        public static final BitSet FOLLOW_rule__PathExpression__Group__1_in_rule__PathExpression__Group__02664 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rulePath_in_rule__PathExpression__Group__0__Impl2691 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__PathExpression__Group__1__Impl_in_rule__PathExpression__Group__12720 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__PathExpression__Group_1__0_in_rule__PathExpression__Group__1__Impl2747 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__PathExpression__Group_1__0__Impl_in_rule__PathExpression__Group_1__02782 = new BitSet(new long[]{0x0000000000003800L});
        public static final BitSet FOLLOW_rule__PathExpression__Group_1__1_in_rule__PathExpression__Group_1__02785 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__PathExpression__Group_1__1__Impl_in_rule__PathExpression__Group_1__12843 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_rule__PathExpression__Group_1__2_in_rule__PathExpression__Group_1__12846 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__PathExpression__SpecialAssignment_1_1_in_rule__PathExpression__Group_1__1__Impl2873 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__PathExpression__Group_1__2__Impl_in_rule__PathExpression__Group_1__22903 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__PathExpression__SuffixAssignment_1_2_in_rule__PathExpression__Group_1__2__Impl2930 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__Module__Group__0__Impl_in_rule__Module__Group__02966 = new BitSet(new long[]{0x0000000000800000L});
        public static final BitSet FOLLOW_rule__Module__Group__1_in_rule__Module__Group__02969 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__Module__NameAssignment_0_in_rule__Module__Group__0__Impl2996 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__Module__Group__1__Impl_in_rule__Module__Group__13026 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__Module__Group_1__0_in_rule__Module__Group__1__Impl3053 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__Module__Group_1__0__Impl_in_rule__Module__Group_1__03088 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_rule__Module__Group_1__1_in_rule__Module__Group_1__03091 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_23_in_rule__Module__Group_1__0__Impl3119 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__Module__Group_1__1__Impl_in_rule__Module__Group_1__13150 = new BitSet(new long[]{0x0000000001000020L});
        public static final BitSet FOLLOW_rule__Module__Group_1__2_in_rule__Module__Group_1__13153 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__Module__FilesAssignment_1_1_in_rule__Module__Group_1__1__Impl3180 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__Module__Group_1__2__Impl_in_rule__Module__Group_1__23210 = new BitSet(new long[]{0x0000000001000020L});
        public static final BitSet FOLLOW_rule__Module__Group_1__3_in_rule__Module__Group_1__23213 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rule__Module__FilesAssignment_1_2_in_rule__Module__Group_1__2__Impl3240 = new BitSet(new long[]{0x0000000000000022L});
        public static final BitSet FOLLOW_rule__Module__Group_1__3__Impl_in_rule__Module__Group_1__33271 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_24_in_rule__Module__Group_1__3__Impl3299 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_RULE_ID_in_rule__ModelRoot__NameAssignment_13343 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleModule_in_rule__ModelRoot__ModulesAssignment_2_13374 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleModule_in_rule__ModelRoot__ModulesAssignment_2_23405 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleMapping_in_rule__ModelRoot__MappingsAssignment_33436 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleMapping_in_rule__ModelRoot__MappingsAssignment_43467 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleOperatorsEnum_in_rule__BinaryFeatureExpression__OperatorAssignment_1_13498 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleBinaryFeatureExpression_in_rule__BinaryFeatureExpression__RightAssignment_1_23529 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleOperatorsEnum_in_rule__UnaryFeatureExpression__OperatorAssignment_03560 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleFeature_in_rule__UnaryFeatureExpression__ExprAssignment_13591 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleFeatureExpression_in_rule__Mapping__ExprAssignment_03622 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleFileMapping_in_rule__Mapping__MappingAssignment_2_03653 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleFileMapping_in_rule__Mapping__MappingAssignment_2_13684 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleEString_in_rule__FileMapping__ModuleAssignment_03719 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rulePathExpression_in_rule__FileMapping__FilesAssignment_23754 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rulePathExpression_in_rule__FileMapping__FilesAssignment_33785 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rulePathEnum_in_rule__PathExpression__SpecialAssignment_1_13816 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rulePathExpression_in_rule__PathExpression__SuffixAssignment_1_23847 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_RULE_ID_in_rule__Path__NameAssignment3878 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_RULE_ID_in_rule__Module__NameAssignment_03909 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rulePathExpression_in_rule__Module__FilesAssignment_1_13940 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rulePathExpression_in_rule__Module__FilesAssignment_1_23971 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_RULE_ID_in_rule__Feature__NameAssignment4002 = new BitSet(new long[]{0x0000000000000002L});
    }


}